UWP 瀏覽本地圖片及對圖片的裁剪
阿新 • • 發佈:2022-04-20
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); // } // } } }