OneDriveと連携し、画像共有・編集が可能なWPFアプリ(2)
OneDriveから取得した画像を変換する
続いてOneDriveから取得した画像をLEADTOOLSを用いて変換する処理を実装します。
シナリオとしては変換した画像を再びOneDriveにアップロードするのですが、先ほどのスマートフォン側の処理と同じ処理になるため割愛します。
画像の変換はパソコンでの作業を想定しWPFアプリケーションを作成します。
ルートフォルダの画像一覧を取得する
OneDriveの認証処理は先述のUWPとほぼ同じですが、今回は認証後、OneDriveのルートフォルダにある画像の一覧を取得します。
if (currentFolder.Folder != null && currentFolder.Children != null && currentFolder.Children.CurrentPage != null) { listupImage(currentFolder.Children.CurrentPage); }
private void listupImage(IList<DriveItem> items) { var imageList = items.Where(item => item.Name.EndsWith(".jpg")); foreach(var tmpImage in imageList) { imageListBox.Items.Add(tmpImage.Name); } }
currentFolderはOneDriveのルートフォルダを表すクラスで、Children.CurrentPageプロパティからルートフォルダ以下のファイルとフォルダの一覧を取得します。CurrentPageはIList<DriveItem>というDriveItemクラスのリストになっているので、そのなかからファイル名の末尾が「.jpg」のものをListBoxに表示しています。
画像をダウンロードする
一覧で選択した画像をダウンロードして表示します。
foreach(var folder in this.currentFolder.Children.CurrentPage) { if (if (folder.Name.Equals(fileName))) { var stream = await this.graphClient.Drive.Items[folder.Id].Content.Request().GetAsync(); var imageSource = new BitmapImage(); imageSource.BeginInit(); imageSource.StreamSource = stream; imageSource.EndInit(); this.image.Source = imageSource; } }
画像は「this.graphClient.Drive.Items[folder.Id].Content.Request().GetAsync();」で取得するこができます。
画像を変換する
取得した画像はLEADTOOLSのさまざまな画像処理機能を利用して変換することができます。今回はグレイスケール変換を行うGrayscaleCommandを利用します。
RasterImage tempImage = RasterImageConverter.ConvertFromSource(this.image.Source, ConvertFromSourceOptions.None); // ここではグレイスケールを適応している。 // その他のエフェクトについてはサンプルのImageProcessingDemoを参照 // デモはC:\LEADTOOLS 19\Examples\以下にインストールされている GrayscaleCommand command = new GrayscaleCommand(); command.BitsPerPixel = 8; command.Run(tempImage); this.changedImage.Source = RasterImageConverter.ConvertToSource(tempImage, ConvertToSourceOptions.None);
取得した画像はRasterImage型に変換することで、各種変換が利用可能です。
グレイスケールはGrayscaleCommandを用いて変換します。
この後、画像をOneDriveにアップロードし、アップロードした画像を再びスマートフォンやタブレットで取得すれば、会議に利用するような急ぎの場合などでも、変更を指示した画像をすぐ編集、クラウドで共有して活用することができるでしょう。
最後の閲覧処理で必要になる実装はこれまで紹介したサンプルと重複するので割愛いたしますが、新しくアプリケーションを作らずともスマートフォンのOneDriveアプリなどでも要件を満たせると思います。
まとめ
ここまでLEADTOOLSの導入と、サンプルを実行する方法とドキュメントについて紹介しました。LEADTOOLSについて、どのような機能があるかもっと詳しく知りたい場合はこれらを活用すると良いでしょう。
また、サンプルとしてOneDriveと連携したアプリケーションのサンプルを紹介しました。Xamarinを利用することで、UWP、Android、iOSから利用可能な点も.NET開発の利点です。LEADTOOLSを利用したWPFアプリケーションも紹介しました。LEADTOOLSを用いた画像変換がシンプルなコードで実現できることがお伝えできたと思います。
本記事がLEADTOOLSを活用する際の一助となれれば幸いです。