【画像処理、ImageMagickをエクセルVBAから使う】
目的
様々な画像処理をVBAから行う。
画像処理例
・フォルダ内の画像ファイルを一括で縮小やリサイズを行う
・フォルダ内の画像ファイルを一括で別形式に変換する(→jpg,png,pdf,etc)
・フォルダ内のjpgファイルをまとめ1つのpdfファイルにする
・画像ファイルのサイズ等の情報を取得する
・2つの画像を合成する
上記の内容はVBA単独では難しいのでフリーソフトのImageMagickをVBAから利用できるようにする。
ImageMagickとは?
準備
1.ImageMagickのダウンロード
Windowsのbit数ではなく使用するOfficeのbit数に合わせるとのこと
http://www.imagemagick.org/script/binary-releases.php
2.ImageMagickのインストール
VBAから利用できるように「Install ImageMagickObject OLE Control for VBScript, Visual Basic, and WSH」にチェックを入れる
3.VBAでのImageMagicObjectの参照設定にチェクを入れる
以下、実例
Sub ImageMagick一括圧縮() '指定したフォルダ内の画像(jpg)を一括し圧縮する(上書き) Dim FolPath As String '任意のフォルダを選択 With Application.FileDialog(msoFileDialogFolderPicker) .Title = titlestr If .Show = -1 Then FolPath = .SelectedItems(1) Else Exit Sub End If End With Set img = New ImageMagickObject.MagickImage Debug.Print img.Identify("-format", "%h", FolPath & "\*.jpg") '選択前のサイズを出力 img.Mogrify "-resize", "65%", FolPath & "\*.jpg" '選択したフォルダ内のjpgを65%圧縮。上書きモード注意! Debug.Print img.Identify("-format", "%h", FolPath & "\*.jpg") '選択後のサイズを出力 Set img = Nothing End Sub