Рассмотрим платформу с пользователями, у каждого пользователя есть аватар, который можно часто менять. Платформа предлагает API для запросов пользователей и их аватаров.
Теперь каждый аватар должен отправляться на внешний API, который обрабатывает изображение, но запрос необходим только в том случае, если изображение изменилось (оптимизируйте ограничение скорости). Аватары будут периодически проверяться на наличие изменений. Теперь к актуальному вопросу:
Я ищу эффективный способ сохранить идентичность изображения, чтобы определить, изменилось ли изображение . Предыдущее изображение не нужно сохранять (вы можете просто сравнить его попиксельно, и тогда уже существует связанный вопрос). Кроме того, не имеет значения, если некоторые изображения выдают тот же value
, как это происходит редко (один дополнительный запрос не имеет значения).
Моей первой идеей было использование метода hashCode()
класса Raster
для вычисления значения, которое можно сохранить в базе данных и легко сравнить. Однако ни BufferedImage
, ни Raster
не переопределяют hashCode
.
public boolean hasAvatarChanged(BufferedImage image, int hashCode) {
// ...
}
Итак, этот подход не работает.