テキストの差分比較ツールは数多あるが、画像の差分比較ツールはあまりない。
ということで、右クリックメニューの「送る」から差分画像を表示する仕組みをつくってみた。
1. 必要なもの。
- 起動の速い画像表示ソフト
拡張子.pngのファイルをダブルクリックして表示できれば何でも良い。
個人的にはマルチプラットフォームという理由でXnViewを使っている。
コマンドプロンプトでcompositeとうち、使い方が表示されればOK。
- ActivePerl
コマンドプロンプトでperl -versionとうち、バージョン表示ができればOK。
下記をimagediff.plとして適当なフォルダに保存する。
#!/usr/bin/perl -- use strict; use utf8; my $file1 = $ARGV[0]; my $file2 = $ARGV[1]; my $diff_file = 'diff.png'; if($file1 ne "" && $file2 ne "" && -e $file1 && -s $file1 && -e $file2 && -s $file2) { my $cmd = 'composite -compose Divide "' . $file1 . '" "' . $file2 . '" ' . $diff_file; system($cmd); system('start ' . $diff_file); } else { print "Usage: $0 <image1> <image2>\n"; print " Hit enter(return) key to close.\n"; my $wait = <STDIN>; }
# EOF
3. バッチファイル作成。
下記をimagediff.batとしてimagediff.plと同じフォルダに保存する。
rem @echo off pushd %~dp0 perl imagediff.pl %*
4. imagediff.batのショートカットを作成、ショートカットの名前をimagediffに変えてSendToフォルダに入れる。
スタートメニュー->ファイル名を指定して実行 に
「sendto」と入力すると早いかも。
完了。
あとはExplorer上で画像ファイルを2つ選択して
右クリック->送る->imagediff
で差分画像が表示される。
TortoiseSVNの差分確認にも使える。
TortoiseSVN
->[Settings]
->[External Programs]
->Diff Viewer
->Advanced
で、.gifや.pngや.jpgの確認プログラムを
<スクリプト保存フォルダ>\imagediff.bat" %base %mine
とする。
TortoiseSVNにはTortoiseIDiffという画像比較ツールがついている。
2枚の画像を並べて見たり、重ね合わせたりできて便利。
ただ、「送る」から比較画面を起動する方法が分からず、ImageMagickを使うことにした。
http://tortoisesvn.tigris.org/TortoiseIDiff.html
差分画像はconvert -list composeでリストアップされた合成方法を色々試してみた結果、Divideがきれいでわかりやすかったので採用。