Эффективный способ сравнить буферизованные изображения на предмет идентичности - PullRequest
0 голосов
/ 20 марта 2019

Рассмотрим платформу с пользователями, у каждого пользователя есть аватар, который можно часто менять. Платформа предлагает API для запросов пользователей и их аватаров.

Теперь каждый аватар должен отправляться на внешний API, который обрабатывает изображение, но запрос необходим только в том случае, если изображение изменилось (оптимизируйте ограничение скорости). Аватары будут периодически проверяться на наличие изменений. Теперь к актуальному вопросу:

Я ищу эффективный способ сохранить идентичность изображения, чтобы определить, изменилось ли изображение . Предыдущее изображение не нужно сохранять (вы можете просто сравнить его попиксельно, и тогда уже существует связанный вопрос). Кроме того, не имеет значения, если некоторые изображения выдают тот же value, как это происходит редко (один дополнительный запрос не имеет значения).

Моей первой идеей было использование метода hashCode() класса Raster для вычисления значения, которое можно сохранить в базе данных и легко сравнить. Однако ни BufferedImage, ни Raster не переопределяют hashCode.

public boolean hasAvatarChanged(BufferedImage image, int hashCode) {
    // ...
}

Итак, этот подход не работает.

...