zoukankan      html  css  js  c++  java
  • 获取文件的缩略图Thumbnail和通过 AQS

    演示如何获取文件的缩略图


    FileSystem/ThumbnailAccess.xaml

    复制代码
    <Page
        x:Class="XamlDemo.FileSystem.ThumbnailAccess"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="using:XamlDemo.FileSystem"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d">
    
        <Grid Background="Transparent">
           <ScrollViewer Margin="120 0 0 0">
                <StackPanel>
    
                    <Button Name="btnGetThumbnail" Content="获取文件的缩略图" Click="btnGetThumbnail_Click_1" />
    
                    <Image Name="img" Stretch="None" HorizontalAlignment="Left" Margin="0 10 0 0" />
                    <TextBlock Name="lblMsg" FontSize="14.667" Margin="0 10 0 0" />
    
                </StackPanel>
            </ScrollViewer>
        </Grid>
    </Page>
    复制代码

    FileSystem/ThumbnailAccess.xaml.cs

    复制代码
    /*
     * 演示如何获取文件的缩略图
     * 
     * 获取指定文件或文件夹的缩略图,返回 StorageItemThumbnail 类型的数据
     * StorageFile.GetThumbnailAsync(ThumbnailMode mode, uint requestedSize, ThumbnailOptions options)
     * StorageFolder.GetThumbnailAsync(ThumbnailMode mode, uint requestedSize, ThumbnailOptions options)
     *     ThumbnailMode mode - 用于描述缩略图的目的,以使系统确定缩略图图像的调整方式(PicturesView, VideosView, MusicView, DocumentsView, ListView, SingleItem)
     *         关于 ThumbnailMode 的详细介绍参见:http://msdn.microsoft.com/en-us/library/windows/apps/hh465350.aspx
     *     uint requestedSize - 期望尺寸的最长边长的大小
     *     ThumbnailOptions options - 检索和调整缩略图的行为(None, ReturnOnlyIfCached, ResizeThumbnail, UseCurrentScale)
     */
    
    using System;
    using Windows.Storage;
    using Windows.Storage.FileProperties;
    using Windows.Storage.Pickers;
    using Windows.UI.Xaml;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Media.Imaging;
    
    namespace XamlDemo.FileSystem
    {
        public sealed partial class ThumbnailAccess : Page
        {
            public ThumbnailAccess()
            {
                this.InitializeComponent();
            }
    
            private async void btnGetThumbnail_Click_1(object sender, RoutedEventArgs e)
            {
                if (XamlDemo.Common.Helper.EnsureUnsnapped())
                {
                    FileOpenPicker openPicker = new FileOpenPicker();
                    openPicker.FileTypeFilter.Add("*");
    
                    StorageFile file = await openPicker.PickSingleFileAsync();
                    if (file != null)
                    {   
                        ThumbnailMode thumbnailMode = ThumbnailMode.PicturesView;
                        ThumbnailOptions thumbnailOptions = ThumbnailOptions.UseCurrentScale;
                        uint requestedSize = 200;
    
                        using (StorageItemThumbnail thumbnail = await file.GetThumbnailAsync(thumbnailMode, requestedSize, thumbnailOptions)) 
                        {
                            if (thumbnail != null)
                            {
                                BitmapImage bitmapImage = new BitmapImage();
                                bitmapImage.SetSource(thumbnail);
                                img.Source = bitmapImage;
    
                                lblMsg.Text = "file name: " + file.Name;
                                lblMsg.Text += Environment.NewLine;
                                lblMsg.Text += "requested size: " + requestedSize;
                                lblMsg.Text += Environment.NewLine;
                                lblMsg.Text += "returned size: " + thumbnail.OriginalWidth + "*" + thumbnail.OriginalHeight;
                            }
                        }
                    }
                }
            }
        }
    }
    复制代码


    4、演示如何通过 AQS - Advanced Query Syntax 搜索本地文件


    FileSystem/AQS.xaml.cs

     
     
    /*
     * 演示如何通过 AQS - Advanced Query Syntax 搜索本地文件
     */
    
    using System;
    using System.Collections.Generic;
    using Windows.Storage;
    using Windows.Storage.BulkAccess;
    using Windows.Storage.FileProperties;
    using Windows.Storage.Search;
    using Windows.UI.Xaml.Controls;
    using Windows.UI.Xaml.Navigation;
    
    namespace XamlDemo.FileSystem
    {
        public sealed partial class AQS : Page
        {
            public AQS()
            {
                this.InitializeComponent();
            }
    
            protected async override void OnNavigatedTo(NavigationEventArgs e)
            {
                // 准备在“音乐库”中进行搜索(需要在 Package.appxmanifest 的“功能”中选中“音乐库”)
                StorageFolder musicFolder = KnownFolders.MusicLibrary;
    
                // 准备搜索所有类型的文件
                List<string> fileTypeFilter = new List<string>();
                fileTypeFilter.Add("*");
    
                // 搜索的查询参数
                QueryOptions queryOptions = new QueryOptions(CommonFileQuery.OrderByDate, fileTypeFilter);
                // 指定 AQS 字符串,参见 http://msdn.microsoft.com/zh-cn/library/windows/apps/aa965711.aspx
                queryOptions.UserSearchFilter = "五月天";
    
                // 根据指定的参数创建一个查询
                StorageFileQueryResult fileQuery = musicFolder.CreateFileQueryWithOptions(queryOptions);
    
                lblMsg.Text = "在音乐库中搜索“五月天”,结果如下:";
                lblMsg.Text += Environment.NewLine;
    
                // 开始搜索,并返回检索到的文件列表
                IReadOnlyList<StorageFile> files = await fileQuery.GetFilesAsync();
    
                if (files.Count == 0)
                {
                    lblMsg.Text += "什么都没搜到";
                }
                else
                {
                    foreach (StorageFile file in files)
                    {
                        lblMsg.Text += file.Name;
                        lblMsg.Text += Environment.NewLine;
                    }
                }
    
    
    
                // 关于 QueryOptions 的一些用法,更详细的 QueryOptions 的说明请参见 msdn
                queryOptions = new QueryOptions();
                queryOptions.FolderDepth = FolderDepth.Deep;
                queryOptions.IndexerOption = IndexerOption.UseIndexerWhenAvailable;
                queryOptions.SortOrder.Clear();
                var sortEntry = new SortEntry();
                sortEntry.PropertyName = "System.FileName";
                sortEntry.AscendingOrder = true;
                queryOptions.SortOrder.Add(sortEntry);
    
                fileQuery = KnownFolders.PicturesLibrary.CreateFileQueryWithOptions(queryOptions);
            }
        }
    }
     
     
  • 相关阅读:
    WPF 关于拖拽打开文件的注意事项
    asp.net core 3.1中对Mongodb BsonDocument的序列化和反序列化支持
    用百度webuploader分片上传大文件
    多线程学习笔记
    web.config数据库连接字符串加密
    Visual Studio 2010 常用快捷方式
    Team Foundation Server 2013 日常使用使用手册(四)分支与合并
    Team Foundation Server 2013 日常使用使用手册(三)上传新工程、创建任务、创建bug、设置预警
    Team Foundation Server 2013 日常使用使用手册(二)修改、签入、撤销、回滚、对比代码变更
    Team Foundation Server 2013 日常使用使用手册(一)-本地连接TFS、查看任务
  • 原文地址:https://www.cnblogs.com/ansen312/p/5919093.html
Copyright © 2011-2022 走看看