VBAからGDI+を使う資料集
inet上の達人の方々から御教示いただいたコードを少しアレンジさせてもらっています(切り貼りとも言います)。
  1. ホーム
  2. clGdiPlus
  3. 画像処理のさわり


画像処理のさわり

リファレンスに載っていた例をアレンジしたものです。色調を変更します。


Sub colorChange()
    Dim srcfile As String, destFile As String
    Dim clGdip As clgdiplus
    Dim imageObject As Object
    Dim retBool As Boolean
    ' ピクセル色成分を受け取る配列
    Dim lPixels() As Byte
    ' カウンタ
    Dim lCptX As Long, lCptY As Long
    Dim colorRed As Long, colorGreen As Long, colorBlue As Long

    Set clGdip = New clgdiplus
    srcfile = "C:\src.bmp"
    destFile = "C:\dest.jpg"
    On Error Resume Next
' 新しいファイルを開く
    retBool = clGdip.OpenFile(srcfile)
    ' ピクセル色成分を配列に取得
    lPixels = clGdip.GetPixels
'    Debug.Print UBound(lPixels, 2) '解像度取得
'    Debug.Print UBound(lPixels, 3)
    ' ピクセル単位でループ
    For lCptX = 1 To UBound(lPixels(), 2)
        For lCptY = 1 To UBound(lPixels(), 3)
            ' 赤の色成分だけ残し、青と緑の色成分を 0 に変更します
            ' 青の色成分を削除
            lPixels(1, lCptX, lCptY) = 0
            ' 緑の色成分を削除
            lPixels(2, lCptX, lCptY) = 0
            ' 色成分 青       = lPixels(1, lCptX, lCptY)
            ' 色成分 緑       = lPixels(2, lCptX, lCptY)
            ' 色成分 赤       = lPixels(3, lCptX, lCptY)
            ' 色成分 不透明度 = lPixels(4, lCptX, lCptY)
        Next
    Next
    ' 画像の色成分を設定
    clGdip.SetPixels lPixels
    retBool = clGdip.SaveFile(destFile, "JPG")
    Set clGdip = Nothing
End Sub