检查图像在Java中是全白色还是完全透明
我调用了一个url来获取本地的图像存储,它已经在工作了,但我只是想确定图像是全白色还是完全透明,这样我就可以跳过图像了
URL url = new URL(logoUrl);
InputStream is = url.openStream();
String fileName = logoUrl.substring(logoUrl.lastIndexOf('/') + 1);
//call other service to upload image as byte array.
uploadService.writeFile(request, fileName, IOUtils.toByteArray(is));
# 1 楼答案
你必须检查所有像素,以检查你的图像是全白还是全透明。使用
PixelGrabber
获取所有像素。如果发现任何非全透明或非白色像素,则图像有效。以下是代码:您应该调整图像的大小以解决性能问题,这样您就不会遍历所有像素:
注意:调整大小可能会忽略可能包含白色以外颜色的小区域。因此这个算法失败了。但这种情况很少发生
编辑:
以下是以下图像的测试运行:
带有url http://i.stack.imgur.com/GqRSB.png的白色图像:
System.out.println(isValid("http://i.stack.imgur.com/GqRSB.png"));
输出:假
带有url http://i.stack.imgur.com/n8Wfi.png的透明图像:
System.out.println(isValid("http://i.stack.imgur.com/n8Wfi.png"));
输出:假
url为http://i.stack.imgur.com/Leusd.png:
的有效图像
System.out.println(isValid("http://i.stack.imgur.com/Leusd.png"));
输出:真