酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows MobileでOpenNETCFを使って画像処理をおこなう

本記事では、OpenNETCFのSmart Device Frameworkを使って、簡単な画像処理をおこなう方法をご紹介しています。処理後の画像をピクチャーボックスに表示させています。

以下のサンプルコードでは、OpenNETCF.Drawing.dllが参照に追加されていることを前提としております。Smart Device Frameworkの導入方法については、こちらのページをご覧ください。

ここで紹介している画像処理は、OpenNETCFを使って画像を回転させたり、.NET Compact Frameworkでは実装されていないサムネイル画像を生成する方法です。

** ピクチャーボックスへの画像の設定

ピクチャーボックスへ画像を表示するための基本の処理です。次の画像は実行例です。

***C#

|cs| private void OpenMenuItem_Click(System.Object sender, System.EventArgs e) { // 画像のファイルパス string ImageFilePath = "\20090622093526.jpg";

// ピクチャーボックスに画像を設定する
PictureBox1.Image = new Bitmap(ImageFilePath);

} ||<

***VB.NET

|vb| Private Sub OpenMenuItem_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles OpenMenuItem.Click

' 表示する画像を選択する
Dim ImageFilePath As String = "\20090622093526.jpg"

' ピクチャーボックスに画像を設定する
PictureBox1.Image = New Bitmap(ImageFilePath)

End Sub ||<

** 画像の回転処理

すでにピクチャーボックスに設定されている画像を時計回りに90度回転させます。次の画像は実行例です。

***C#

|cs| private void RightRotateMenuItem_Click(System.Object sender, System.EventArgs e) { if(PictureBox1.Image == null) return;

// 画像のファイルパス
string ImageFilePath = "\\20090622093526.jpg";
Bitmap srcBmp = New Bitmap(ImageFilePath);

// 現在表示している画像を90度回転する
OpenNETCF.Drawing.RotationAngle rotate 
  = OpenNETCF.Drawing.RotationAngle.Clockwise90;

Bitmap RotatedBitmap 
  = OpenNETCF.Drawing.Imaging.ImageUtils.Rotate(
    (Bitmap)PictureBox1.Image, rotate);

// ピクチャーボックスに画像を設定する
PictureBox1.Image = RotatedBitmap;

} ||<

***VB.NET

|vb| ' 画像を右回転させる Private Sub RightRotateMenuItem_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs)

If (PictureBox1.Image Is Nothing) Then
    Return
End If

' 現在表示している画像を90度回転する
Dim rotate As OpenNETCF.Drawing.RotationAngle = _
    OpenNETCF.Drawing.RotationAngle.Clockwise90

Dim RotatedBitmap As Bitmap = _
    OpenNETCF.Drawing.Imaging.ImageUtils.Rotate( _
        CType(PictureBox1.Image, Bitmap), rotate)

' ピクチャーボックスに画像を設定する
PictureBox1.Image = RotatedBitmap

End Sub ||<

**サムネイル画像の生成

サムネイル画像の生成を行います。次の画像は実行例です。

***C#

|cs| private void CreateThumMenuItem_Click(System.Object sender, System.EventArgs e) { // 表示する画像を選択する string ImageFilePath = "\20090622093526.jpg";

// 画像のファイルパス
System.IO.FileStream fs = 
  new System.IO.FileStream(ImageFilePath, IO.FileMode.Open);

Size newSize = PictureBox1.Size;
newSize.Width /= 2;
newSize.Height /= 2;

OpenNETCF.Drawing.Imaging.IBitmapImage bi = null;
bi = OpenNETCF.Drawing.Imaging.ImageUtils.CreateThumbnail(fs, newSize);

// ピクチャーボックスに画像を設定する
PictureBox1.Image = 
  OpenNETCF.Drawing.Imaging.ImageUtils.IBitmapImageToBitmap(bi);

}

||<

***VB.NET

|vb| Private Sub CreateThumMenuItem_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs)

' 表示する画像を選択する
Dim ImageFilePath As String = "\20090622093526.jpg"

' 画像のファイルパス
Dim fs As New System.IO.FileStream(ImageFilePath, IO.FileMode.Open)

Dim newSize As Size = PictureBox1.Size
With newSize
    .Width /= 2
    .Height /= 2
End With

Dim bi As OpenNETCF.Drawing.Imaging.IBitmapImage = Nothing
bi = OpenNETCF.Drawing.Imaging.ImageUtils.CreateThumbnail( _
   fs, newSize)

' ピクチャーボックスに画像を設定する
PictureBox1.Image = _
   OpenNETCF.Drawing.Imaging.ImageUtils.IBitmapImageToBitmap(bi)

End Sub ||<

なお、今回使用させて頂いた画像はを使用させて頂きました。

OpenNETCF Smart Device Frameworkの導入に関しては、「Windows MobileアプリにOpenNETCF Smart Device Frameworkを導入する - 酢ろぐ!」をお読みください。