A Micro Toolbox

ソフトウェアのニッチな問題の対処記録です

ImageMagick:右クリックから画像の差分を確認する

テキストの差分比較ツールは数多あるが、画像の差分比較ツールはあまりない。
ということで、右クリックメニューの「送る」から差分画像を表示する仕組みをつくってみた。


1. 必要なもの。

  • 起動の速い画像表示ソフト

 拡張子.pngのファイルをダブルクリックして表示できれば何でも良い。
 個人的にはマルチプラットフォームという理由でXnViewを使っている。

 コマンドプロンプトでcompositeとうち、使い方が表示されればOK。

  • ActivePerl

 コマンドプロンプトperl -versionとうち、バージョン表示ができればOK。


2. Perlスクリプト作成。

 下記を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がきれいでわかりやすかったので採用。