Hatena::ブログ(Diary)

Toolbox

2010-11-18

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

| 02:03

テキストの差分比較ツールは数多あるが、画像の差分比較ツールはあまりない。

ということで、右クリックメニューの「送る」から差分画像を表示する仕組みをつくってみた。


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

discypusdiscypus 2011/02/09 23:31 「tortoiseidiff /left:%1 /right:%2」なショートカットかバッチファイルを作ればできたと思います。「tortoiseidiff /?」で引数の仕様がわかります。

m0t0m0t0m0t0m0t0 2011/02/10 01:47 discypusさん

情報ありがとうございます!!
tortoiseidiff -helpでもヘルプでますね。
ご教示頂いたとおりのバッチファイル作って「送る」から比較できました。

トラックバック - http://d.hatena.ne.jp/m0t0m0t0/20101118/1290099793