画像に各種フィルタを適用して保存するWindowsアプリを作る
※前ページからの続きです。
[グレースケール]ボタンがクリックされた時の処理
Private Async Sub grayButton_Click(sender As Object, e As RoutedEventArgs) Handles grayButton.Click Dim myBmp = Await GetTestImageAsync() mySource = myBmp.EffectGrayscale Image1.Source = mySource saveButton.IsEnabled = True End Sub
[ネガティブ]ボタンがクリックされた時の処理
Private Async Sub negativeButton_Click(sender As Object, e As RoutedEventArgs) Handles negativeButton.Click Dim myBmp = Await GetTestImageAsync() mySource = myBmp.EffectNegative Image1.Source = mySource saveButton.IsEnabled = True End Sub
[セピア]ボタンがクリックされた時の処理
Private Async Sub sepiaButton_Click(sender As Object, e As RoutedEventArgs) Handles sepiaButton.Click Dim myBmp = Await GetTestImageAsync() mySource = myBmp.EffectSepia Image1.Source = mySource saveButton.IsEnabled = True End Sub
[Saturation]ボタンがクリックされた時の処理
Private Async Sub SaturationButton_Click(sender As Object, e As RoutedEventArgs) Handles SaturationButton.Click Dim myBmp = Await GetTestImageAsync() mySource = myBmp.EffectSaturation(1.0) Image1.Source = mySource saveButton.IsEnabled = True End Sub
[Vignetting]ボタンがクリックされた時の処理
Private Async Sub VignettingButton_Click(sender As Object, e As RoutedEventArgs) Handles VignettingButton.Click Dim myBmp = Await GetTestImageAsync() mySource = Await myBmp.EffectVignettingAsync(1.0) 'エラー Image1.Source = mySource saveButton.IsEnabled = True End Sub
[Toycamera]ボタンがクリックされた時の処理
Private Async Sub ToycameraButton_Click(sender As Object, e As RoutedEventArgs) Handles ToycameraButton.Click Dim myBmp = Await GetTestImageAsync() mySource = Await myBmp.EffectToycameraAsync Image1.Source = mySource saveButton.IsEnabled = True End Sub
[Posterize]ボタンがクリックされた時の処理
Private Async Sub PosterizeButton_Click(sender As Object, e As RoutedEventArgs) Handles PosterizeButton.Click Dim myBmp = Await GetTestImageAsync() mySource = myBmp.EffectPosterize(255) Image1.Source = mySource saveButton.IsEnabled = True End Sub
[コントラスト]ボタンがクリックされた時の処理
Private Async Sub contrastButton_Click(sender As Object, e As RoutedEventArgs) Handles contrastButton.Click Dim myBmp = Await GetTestImageAsync() mySource = myBmp.EffectContrast(1.0) Image1.Source = mySource saveButton.IsEnabled = True End Sub
[Effect適用後の画像保存]ボタンがクリックされた時の処理
SaveAsyncメソッドで、「画像のフォーマット」「保存する場所」「ファイル名」「画像の幅」「画像の高さ」を指定して保存します。ここでは、PNGファイル形式で、ピクチャライブラリ内に、現在の年月日時間分秒のファイル名で保存しています。
[一覧]ボタンの使用を可能にします。
非同期で処理がなされるため、メソッドの先頭にAsyncを追加します。
Private Async Sub saveButton_Click(sender As Object, e As RoutedEventArgs) Handles saveButton.Click Dim myBmp = DirectCast(Image1.Source, WriteableBitmap) Await myBmp.SaveAsync(ImageFormat.Png, ImageDirectories.PicturesLibrary, DateTime.Now.ToString("yyyyMMddHHmmss"), 640, 480) ichiranButton.IsEnabled = True messageTextBlock.Text = "Picturesフォルダに保存しました。" End Sub
[一覧]ボタンがクリックされた時の処理
ピクチャライブラリにアクセスします。GetFileAsyncメソッドでピクチャライブラリ内の画像を取得し、コレクション変数myPictureFilesに格納しておきます。
ListBox内を一度クリアします。クリアしないと、画像が重複して表示されてしまいます。
画像ファイル名を格納しているコレクション変数myPictureFiles内のファイル名を、変数myFileに格納しながら反復処理を行います。
BitmapImageの新しいインスタンスbmpオブジェクトを作成します。SetSourceメソッドにAwait myFile.OpenReadAsyncと指定して、ファイルを開きます。
新しいImageのインスタンスmyImageオブジェクトを作成します。
WidthとHeightを指定します。
Sourceプロパティにbmpオブジェクトを指定します。
ListBoxにAddメソッドでmyImageオブジェクトを追加します。これで、ListBox内に、ピクチャライブラリに保存された、エフェクトのかかった画像の一覧が表示されます。
非同期で処理がなされるため、メソッドの先頭にAsyncを追加します。
Private Async Sub ichiranButton_Click(sender As Object, e As RoutedEventArgs) Handles ichiranButton.Click Dim myPictureFolder = KnownFolders.PicturesLibrary Dim myPictureFiles As IReadOnlyList(Of IStorageFile) = Await myPictureFolder.GetFilesAsync() ListBox1.Items.Clear() For Each myFile In myPictureFiles Dim bmp As New BitmapImage bmp.SetSource(Await myFile.OpenReadAsync) Dim myImage As New Image myImage.Width = 320 myImage.Height = 240 myImage.Source = bmp ListBox1.Items.Add(myImage) Next End Sub End Class
今回でWindows Store Applicationプログラミング(基本編)の解説を終わります。如何だったでしょうか?Windows Store Applicationプログラミングは、コードも比較的短く、使用するメソッド等も、名前から何に使用するメソッドであるかの判断が付きやすく、意外と敷居の低いプログラミングではないかと思います。
この連載を参考にして、ぜひ面白くて独創的なWindows Store Applicationの作成にトライしてください。
では、ありがとうございました。
PROJECT KySS 薬師寺国安
画像に各種フィルタを適用して保存するWindows8サンプルアプリ
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Webカメラで撮影した写真をセピア調に演出するアプリを作る
- お気に入りの写真に登場する、仲良しクラウディアちゃん
- 撮影した写真と手持ちの画像を合成して保存するサンプルアプリ
- 場所と写真を記録するプログラムを作って思い出のシーンを保存しよう
- ピクチャライブラリ内の画像を指定して表示する+1つのサンプル
- 撮影した写真の管理ができるマイフォトアプリを作る
- 国内ニュースの取得・表示と、人名から画像検索を行う2つのサンプルをつくる
- CountDownControlを使ってカウントダウン後にカメラのシャッターを切る
- 画像の任意の部分をトリミングして保存するプログラムを作る
- PCで撮影した写真を並べて最適な1枚を選べるプログラムをつくる