執筆者: インフラジスティックス・ジャパン株式会社 池原 大然

動作確認環境: Visual Studio 2010、6.NET Framework 2.0、Windows 7 Enterprise 32 bit

更新日: 2010 年 5 月 28 日


System.Drawing.Image クラス、あるいは Image クラスを継承した Bitmap クラスを利用することで画像ファイルの作成やロード、変更、保存を行うことができます。既存の画像ファイルを Bitmap クラスで読み取る場合にはコンストラクタにてファイル名を指定します。Bitmap クラスでサポートしている形式は、BMP、GIF、EXIF、JPG、PNG、TIFF などになります。

なお、コンソールアプリケーションは初期状態で System.Drawing.dll アセンブリがプロジェクトで参照されていないため、[ソリューション エクスプローラー] から [参照の追加] を実行し、アセンブリを予めプロジェクトに追加しておく必要があります。

Bitmap クラスでは読み込んだ画像オブジェクトに対し、SetPixel メソッドを使用することで画像オブジェクトの特定のピクセルを変更することができます。

例として、"C:\Images\sample.jpg" という画像ファイルを読み込み、ピクセルを変更させた後、"C:\Images\sampleNew.jpg" と新しい画像ファイルを保存するコードは下記のようになります。

Visual Basic
Imports System.Drawing

Module Module1
    Sub Main()
        Dim oFileName As String = "C:\Images\sample.jpg"
        Dim nFileName As String = "C:\Images\sampleNew.jpg"

        Using oImage As Bitmap = New Bitmap(oFileName)
            For i As Integer = 0 To oImage.Width - 1 Step 2
                For j As Integer = 0 To oImage.Height - 1 Step 2
                    oImage.SetPixel(i, j, Color.Blue)
                Next
            Next
            oImage.Save(nFileName)
        End Using
        System.Diagnostics.Process.Start(nFileName)
    End Sub
End Module
 

上記のサンプルコードでは Save メソッドを使用し保存するファイル名を指定しています。
また、画像オブジェクトに関する処理を終えたあとは、画像オブジェクト インスタンスを Dispose し、リソースを解放する必要があることについても注意してくさい。今回は using ステートメントの使用により、自動的にこの処理が行われるように設定しています。

最後にすべての作業が終了した後に保存するファイルの拡張子に関連付けられたアプリケーションが起動するよう、System.Diagnostics.Process.Start メソッドを実行しています。Windows 7 においては既定では Windows フォト ビューアーが起動し、変更した画像を表示します。

関連リンク

 


Code Recipe Code Recipe

ページのトップへ