Windows GUI wrapper for webpconv

JPEGより約40%コンパクト:Google、Web高速化を目指し新画像フォーマット「WebP」を発表 - ITmedia エンタープライズ と,Google が新しい画像フォーマットを発表したようで賑わっていました.A new image format for the Web  |  WebP  |  Google Developers を見たところ,各種画像ファイルから WebP へのコンバータとしては,今のところ Linux 向けのコマンドライン版のみが提供されているようですが,折角なので WindowsGUI ラッパーを作成してみました.

webpconv の Windows 版はまだ提供されていないようなので,取り合えず cygwin で make する事で手を抜いています(そのため,cygwin1.dll などがわんさか付いています・・・).また,GUI 部分は C# で記述しているので,.NetFramework 2.0 以降のランタイムライブラリが必要となります.

解凍してできたフォルダにある Image2WebP.exe を実行すると以下のようなアイコンが出現するので,このアイコンに変換したい画像ファイルを Drag&Drop します.Drag&Drop したファイルが変換可能な画像ファイルの場合は,元の画像ファイルと同じフォルダに *.webp (同名で拡張子のみ異なる)と言うファイルが生成されます.終了する場合は,右クリックでコンテキストメニューを表示させ,終了を選択します.

変換可能な画像フォーマットは *.bmp, *.jpg (*.jpeg), *.png, *.gif の 4種類のようなので,それ以外のファイルは弾いています(現在は,拡張子だけを見て判別しています).また,フォルダを Drag&Drop した場合は再帰的に展開しています.

勢いで作ってみたのは良いのですが,変換しても(再度 *.png に変換しないと)見る方法がないと言う事実を後から知って脱力してしまいました.本の虫: Dark_Shikari、WebPについて語る みたいな話もありますが,確かに発表するには早すぎたのでは・・・と言う気もします.

尚,cygwin で make していると以下のようなエラーが発生しました.

$ make webpconv
g++ -Werror -o webpconv webpconv.o libwebp.o ../leptonlib-1.066/lib/nodebug/liblept.a -ltiff -ljpeg -lpng -lgif -lz -lm -lvpx -lpthread
webpconv.o:webpconv.c:(.text+0x59e): undefined reference to `_pixReadWebP'
webpconv.o:webpconv.c:(.text+0x89e): undefined reference to `_pixWriteWebP'
webpconv.o:webpconv.c:(.text+0x8fa): undefined reference to `_pixWriteWebPwithTargetPSNR'
collect2: ld returned 1 exit status
make: *** [webpconv] Error 1

webp/leptonlib-1.066/src/webpio.c が make の対象になっていないため,リンク時に定義が見つからないと言うエラーが発生していたようです.今回は,手動で適当に makefile を修正して通しました.