问题描述
我正在尝试在测试项目中包括图像验证,因此我可以在网站的某些区域进行验证,例如预告片,页脚等。
我用selenium截取屏幕截图,并在第一次将其保存为PNG文件,然后在每个测试用例中,我将截取一个新的屏幕截图,然后通过ShutterBug库将两者进行比较并打印出不同的图像。
主要问题是,当我截取屏幕截图时,每个浏览器都有不同的大小,而当我通过Graphics2D调整大小时,它会有所不同。我也尝试过使用openCV,但是它不起作用。因为抗锯齿。
private static BufferedImage resize(BufferedImage img,int height,int width,int imageType) throws IOException {
Image tmp = img.getScaledInstance(width,-1,Image.SCALE_SMOOTH);
BufferedImage resized = new BufferedImage(width,height,imageType);
Graphics2D g2d = resized.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2d.setRenderingHint(RenderingHints.KEY_DITHERING,RenderingHints.VALUE_DITHER_ENABLE);
g2d.drawImage(tmp,null);
g2d.dispose();
return resized;
}
private Mat resize(BufferedImage image,int width){
Size size = new Size(width,height);
Mat img = Imgcodecs.imdecode(new MatOfByte(bufferedImageToByteArray(image)),Imgcodecs.IMREAD_COLOR);
Mat resized=new Mat(size,CvType.CV_64FC4);
Imgproc.resize(img,resized,size,INTER_AREA);
return resized;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)