【发布时间】:2020-03-01 04:15:58
【问题描述】:
我有一个BufferedImage image1 和BufferedImage image2,我想知道它们是否相等。
image1 是预先制作并存储到图像文件中的,我使用ImageIO 进行转换。但是,image2 是现场制作的,因此几乎可以保证它们具有不同的尺寸。我所知道的是image2 将等于9 个不同的image1 之一。
所以,我想要做的是检查它们是否是相同的图像,但忽略边缘上的所有白色像素,因为它们的大小不同,所以如果我比较所有像素,无论如何它们都会不同。如果您想知道为什么边缘有白色,图像是数字,因此剩余空间将为白色。
如果您想让它更简单,真实图像的颜色将始终为黑色,但如果您将其设为通用解决方案(意味着考虑所有颜色),我希望它更好,以便我以后可以使用这些概念.
private boolean equals(BufferedImage image1, BufferedImage image2) {
// This is what I want to fill out.
}
我首先尝试做的是找到image1 的第一个非白色像素和image2 的第一个非白色像素,然后检查之后的行,看看是否一切都相等。但是,图像非常大,而且这种方法花费的时间超过 O(n ^ 2)。我需要一个更快的方法。
【问题讨论】:
标签: java bufferedimage