在自动化测试中,除了普通的值验证,经常还有一些图片验证,比如图片的匹配率,输出图片的差异图片等。本文主要用到了BufferedImage类来操作图片比对和输出差异图片,大体的思路如下:
1. 通过ImageIO读入图片,生成相应的BufferedImage实例(Image操作流)
2. 修改目标图片的尺寸大小,以适应期望图片的大小(为像素比对做准备)
3. 获取每一个(width,height)的ARGB,并获取相应的Red, Green,Blue的值
4. 按照每个像素点的R,G,B进行比较(需要定义允许的R,G,B的误差)
5. 统计不同的像素点,生成diff图片
代码如下:
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
public class ImageDiff {
//不同的像素标记为红色
public static final int RGB_RED = 16711680;
//允许的Red,Green,Blue单个维度的像素差值
public static final int DIFF_ALLOW_RANGE = 5;
//不同像素点统计值
public static int diffPointCount = 0;