Pitaliumの画像比較機能を使う
PitaliumはWebブラウザを自動操作し、撮影したスクリーンショットを使って前回撮影した時と差分がないかチェックするテストツールです。DOM比較などに比べて手軽に使え、デザイン崩れもチェックできます。
そんなPitaliumの画像比較処理だけを取り出す方法を紹介します。
準備するもの
必要なライブラリは以下の通りです。
これらのライブラリが必要です。すべて同じディレクトリに配置するものとします。
コードについて
参考のコードは次のようになります。二つの画像をCLIの引数として受け取り、差分があった場合はPNGとして差分を出力します。このファイルを diff.java とします。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.*; | |
import javax.imageio.ImageIO; | |
import java.awt.image.BufferedImage; | |
import com.htmlhifive.pitalium.core.*; | |
import com.htmlhifive.pitalium.image.util.*; | |
import com.htmlhifive.pitalium.image.model.*; | |
class Diff { | |
public static void main(String args[]){ | |
try { | |
// 正とする画像 | |
BufferedImage Image1 = ImageIO.read(new File(args[0])); | |
// 比較対象の画像 | |
BufferedImage Image2 = ImageIO.read(new File(args[1])); | |
// 比較実行 | |
ImageComparedResult result = ImageUtils.compare( | |
Image1, null, Image2, null, | |
new CompareOption[] { | |
new CompareOption( | |
CompareOptionType.DEFAULT, | |
new DefaultComparisonParameters() | |
) | |
} | |
); | |
// 結果の確認 | |
if (result.isFailed()) { | |
// 違いがある場合 | |
// 差分を書き出し | |
DiffPoints diffPoints = (DiffPoints) result; | |
final BufferedImage diffImage = ImageUtils.getDiffImage( | |
Image1, | |
Image2, | |
diffPoints | |
); | |
// ファイルに書き出し | |
ImageIO.write(diffImage, "png", new File(args[2])); | |
} | |
} catch(IOException e) { | |
System.err.println(e.getMessage()); | |
} | |
} | |
} |
コンパイル
コンパイル時には pitalium-*.jar がクラスパスに追加されている必要があります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ javac -cp ".:./pitalium-1.2.1.jar" diff.java |
実行
実行時には slf4j をクラスパスに追加して実行する必要があります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ java -cp ".:./pitalium-1.2.1.jar:./slf4j-simple-1.7.25.jar:./slf4j-api-1.7.25.jar" \ | |
Diff diff1.png diff2.png diff3.png |
今回のファイルは以下の二つです。
実行すると一瞬GUIアプリケーションが立ち上がった後、差分ファイルが書き出されます。
このようにしてPitalium独自の画像出力機能だけを利用できます。スクリーンショット以外の用途でも使えると思いますので、皆さんの開発に役立ててください。
コメントは受け付けていません。