图片比对java,Java图片比对

本文介绍了在自动化测试中使用Java进行图片比对的方法,通过BufferedImage类操作图片,调整图片尺寸以适应期望图片大小,然后逐像素比较RGB值,统计差异点并生成差异图,最后计算图片的相似度。
摘要由CSDN通过智能技术生成

在自动化测试中,除了普通的值验证,经常还有一些图片验证,比如图片的匹配率,输出图片的差异图片等。本文主要用到了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;

//从rgb值中抽取red

public static int getRed(int rgbValue){

return rgbValue & 0xff0000 >> 16;

}

//从rgb值中抽取green

public static int getGreen(int rgbValue){

return rgbValue & 0xff00 >> 8;

}

//从rgb值中抽取blue

public static int getBlue(int rgbValue){

return rgbValue & 0xff;

}

/**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值