python画出来的好看的图片,python怎么生成图片
在自动化测试中,除了通常的值验证外,还经常进行图像验证,例如图像的匹配率~我爱你~输出图像的差分图像等。本文主要使用缓冲区图像(缓冲区映像)类操作图像比对和差分图像输出,大致思路如下。
用图像(图片)读取图像,生成相应的缓冲图像实例(图像操作流程)
2 .修改对象图像的尺寸以适合期望的图像的尺寸(像素匹配的准备页:1。
3 .获取每个(宽度)的阿尔伯克基,并且获取相应的红绿蓝的值
4 .对每个像素点的r、g、b进行比较(需要定义允许的r、g、b的误差)的双曲馀弦值。
5 .统计不同的像素点并生成差异(差异)图像
代码如下所示。
导入javax。图像。图像;
导入java.awt.*:
导入java。awt。形象。缓冲图像:
导入java.io.File:
导入java。超正析象管异常:
导入java。文字。十进制格式格式:
公共类图像定义{
//不同的像素标记为红色
publicstaticfinalintrgb _ red=16711680
//允许的红绿蓝的单维像素差
publicstatiflintdff _ allow _ range=5;
//不同像素点统计值
publicstaticintdiffpointcount=0
从//RGB值中提取红的
pubstatiticintgetdred(intrgbvalue)>
返回RGB值0 xff 0000 16
}
从//RGB值中提取格林!格林
publicstattgreen(intrigvalue)>
返回rgbv value 0 xff 00 8;
}
//从RGB(三原色)值提取蓝的
publicstatgettblu(intrgbvalue)>
返回RGB值0 xff
}
//*
*比较两幅图像,用红色表示不同的像素点,本地保存差分图像,打印一致率
* @param srcImgPath
* @param targetImgPath
*/
pubstatcvoid比较图像(string src img path,String targetImgPath)>
尝试[
缓冲图像src img=image。阅读(新文件)srcimgpath
buffer edimagetargetimg=image。阅读(新文件(目标img路径));
diffPointCount=0:
缓冲图像diff=src img
int src height=src img。获取高度(;
int src width=src img获取宽度(;
//根据源图像的尺寸修改要比较的图像的尺寸
图片目标=更改图像大小(img目标、srcHeight、src width);
int srcrgb
目标间rgb
for(inth=0);h。对
for(intw=0);w代表
src RGB=src img。信息GB(宽,高);
目标RGB=目标img。SVG(w,h);
获得红色(src RGB(-get red)目标RGB))diff _ allow _ range
数学,数学ABS(获得绿色(src RGB)-获取绿色(目标RGB ) ) DIFF_ALLOW_RANGE
数学,数学ABS(获取蓝色(src RGB)-获取蓝色(目标RGB))差异允许范围
差异。设置RGB(w、h、RGB _ red);
差别计数;
}
}
}
//保存差分图像
形象。write(diff img, jpg ,new file))diff。jpg
System.out.println(无法保存差分图像我的天);
//计算相似度(保留小数点后四位)的双曲馀弦值。
int total pixel=src height * src width;
十进制格式=新的十进制格式(#).# # #
双匹配率=(总像素-差异点计数)/(总像素* 1.0);
System.out.println(图像相似度为decimalformat.format(匹配率);
}catch(异常)}
例如打印堆栈跟踪(;
}
}
//*
更改缓冲图像的图像大小,将其与源图像进行比较
* @param图像
* @param newHeight
* @param newWidth
* @返回
*/
public static buffer edimagechangeimagesize(buffer edimageimage,int newHeight,int newWidth)>
图像img=图像。getscaledinstance(新宽度、新高度、图像)。缩放_平滑:
intwidth=img。获取宽度(null);
in thigh=img . get height(null):
//获取新图像的缓冲图像实例
bufferedimage=newbufferedimage(宽度、高度、
缓冲区图像(缓冲区映像)。类型_INT_ARGB:
graphicssg=新的缓冲区图像。获取图形(:
g.drawimage(img,0,0,null);
g。规定(;
返回newbufferedimage
}
publicstaticvoidmain(字符串[]args)>
比较( 1 .jpg) 2。jpg
}
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。