コンテンツへスキップ
Tags

Pitaliumの画像比較機能を使う

by : 2017/09/21

PitaliumはWebブラウザを自動操作し、撮影したスクリーンショットを使って前回撮影した時と差分がないかチェックするテストツールです。DOM比較などに比べて手軽に使え、デザイン崩れもチェックできます。

そんなPitaliumの画像比較処理だけを取り出す方法を紹介します。

準備するもの

必要なライブラリは以下の通りです。

これらのライブラリが必要です。すべて同じディレクトリに配置するものとします。

コードについて

参考のコードは次のようになります。二つの画像をCLIの引数として受け取り、差分があった場合はPNGとして差分を出力します。このファイルを diff.java とします。

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());
}
}
}

view raw
diff.java
hosted with ❤ by GitHub

コンパイル

コンパイル時には pitalium-*.jar がクラスパスに追加されている必要があります。

$ javac -cp ".:./pitalium-1.2.1.jar" diff.java

view raw
compile.sh
hosted with ❤ by GitHub

実行

実行時には slf4j をクラスパスに追加して実行する必要があります。

$ 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

view raw
compile.sh
hosted with ❤ by GitHub

今回のファイルは以下の二つです。

実行すると一瞬GUIアプリケーションが立ち上がった後、差分ファイルが書き出されます。


このようにしてPitalium独自の画像出力機能だけを利用できます。スクリーンショット以外の用途でも使えると思いますので、皆さんの開発に役立ててください。

Pitalium(hifiveリグレッションテストライブラリ) – hifive

From → Pitalium

コメントは受け付けていません。

%d人のブロガーが「いいね」をつけました。