У меня есть один BufferedImage image1
и BufferedImage image2
, и я хочу знать, равны ли они.
image1
сделан заранее и сохранен в файле изображения, где я конвертирую, используя ImageIO
. Тем не менее, image2
производится на месте, так что в значительной степени гарантируется, что они имеют разные размеры. Что я знаю, так это то, что image2
будет равно одному из 9 различных image1
.
Итак, я хочу проверить, являются ли они одним и тем же изображением, но игнорировать все белые пиксели на краю, потому что они имеют разный размер, поэтому, если я сравню все пиксели, они будут разными, независимо от того, что. Если вам интересно, почему по краям белый цвет, изображения являются числами, поэтому оставшееся пространство будет белым.
Если вы хотите упростить его, цвет реального изображения всегда будет черным, но мне бы хотелось, чтобы вы сделали его стандартным решением c (то есть с учетом всех цветов), поэтому Я мог бы использовать понятия позже.
private boolean equals(BufferedImage image1, BufferedImage image2) {
// This is what I want to fill out.
}
Сначала я попытался найти первый небелой пиксель image1
и первый небеленный пиксель image2
, а затем проверьте строки после этого, чтобы увидеть, если все равно. Тем не менее, изображения довольно большие, и этот подход требует больше, чем O (n ^ 2). Мне нужен более быстрый способ.