1. 程式人生 > 其它 >UWP 瀏覽本地圖片及對圖片的裁剪

UWP 瀏覽本地圖片及對圖片的裁剪

UWP 瀏覽本地圖片及對圖片的裁剪

     private async void btnAddPhoto_Click(object sender, RoutedEventArgs e)
        {
            //建立和自定義 FileOpenPicker
            var picker = new Windows.Storage.Pickers.FileOpenPicker();
            picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail; //可通過使用圖片縮圖建立豐富的視覺顯示,以顯示檔案選取器中的檔案
            picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
            picker.FileTypeFilter.Add(".jpg");
            picker.FileTypeFilter.Add(".jpeg");
            picker.FileTypeFilter.Add(".png");
            picker.FileTypeFilter.Add(".gif");

            //選取單個檔案
            Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();

            //檔案處理
            if (file != null)
            {

                try
                {
                    // 載入已儲存的裁剪後圖片
                    var stream = await file.OpenReadAsync();
                    var bitmap = new BitmapImage();
                    await bitmap.SetSourceAsync(stream);

                    // 顯示
                    imgHead.Source = bitmap;
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message + ex.StackTrace);
                }
                //或者用下面的方法實現了裁剪功能
                //    var inputFile = SharedStorageAccessManager.AddFile(file);
                //    var destination = await ApplicationData.Current.LocalFolder.CreateFileAsync("Cropped.jpg", CreationCollisionOption.ReplaceExisting);//在應用資料夾中建立檔案用來儲存裁剪後的影象
                //    var destinationFile = SharedStorageAccessManager.AddFile(destination);
                //    var options = new LauncherOptions();
                //    options.TargetApplicationPackageFamilyName = "Microsoft.Windows.Photos_8wekyb3d8bbwe";

                //    //待會要傳入的引數
                //    var parameters = new ValueSet();
                //    parameters.Add("InputToken", inputFile);                //輸入檔案
                //    parameters.Add("DestinationToken", destinationFile);    //輸出檔案
                //    parameters.Add("ShowCamera", false);                    //它允許我們顯示一個按鈕,以允許使用者採取當場圖象(但是好像並沒有什麼卵用)
                //    parameters.Add("EllipticalCrop", true);                 //截圖區域顯示為圓(最後截出來還是方形)
                //    parameters.Add("CropWidthPixals", 500);
                //    parameters.Add("CropHeightPixals", 600);

                //    //呼叫系統自帶截圖並返回結果
                //    var result = await Launcher.LaunchUriForResultsAsync(new Uri("microsoft.windows.photos.crop:"), options, parameters);

                //    //按理說下面這個判斷應該沒問題呀,但是如果裁剪介面點了取消的話後面會出現異常,所以後面我加了try catch
                //    if (result.Status == LaunchUriStatus.Success && result.Result != null)
                //    {
                //        //對裁剪後圖像的下一步處理
                //        try
                //        {
                //            // 載入已儲存的裁剪後圖片
                //            var stream = await destination.OpenReadAsync();
                //            var bitmap = new BitmapImage();
                //            await bitmap.SetSourceAsync(stream);

                //            // 顯示
                //            imgHead.Source = bitmap;
                //        }
                //        catch (Exception ex)
                //        {
                //            Debug.WriteLine(ex.Message + ex.StackTrace);
                //        }
                //    }

            }



        }