Что такое хороший способ проверить, является ли изображение уникальным с помощью PHP?

Каков наилучший способ проверить, является ли изображение уникальным с помощью PHP? Скажем, у меня есть каталог из 30 изображений (около 500 * 500 пикселей), а кто-то загружает другое изображение, что является хорошим способом проверить, не загружено ли загруженное изображение в каталог?

Есть ли способ создать хеш-изображения, которые можно легко сравнить? Затем я мог бы сохранить хэш изображений в каталоге и сравнить их с хешем загруженного изображения.

Вычислительная мощность – это не большая проблема, она не должна обрабатывать более нескольких снимков в минуту. Не факт, что изображения с разностью в один пиксель будут рассматриваться как разные изображения. Система должна просто иметь возможность отфильтровывать изображения, которые являются точно такими же.

запустите контрольную сумму в файле . Если она совпадает с той, которую вы уже имеете, то это, вероятно, то же точное изображение.

Используйте md5 или sha1 в файле изображения.

Система должна просто иметь возможность отфильтровывать изображения, которые являются точно такими же.

В этом случае вы могли бы просто забыть, что вы говорите об изображениях и просто рассматриваете их как двоичные файлы, используя hash_file() для создания хэша.

Конечно, это также приведет к разным хэшам для изображений, которые отличаются только метаданными, такими как комментарии EXIF ​​в изображениях JPEG. Вам придется решить, будет ли это проблемой для вас.

Байт-мутное сравнение файлов не удастся, даже если небольшая деталь, подобная тегу ID3, изменилась. Чтобы сравнить содержимое изображения, вам нужно будет открыть файл изображения и создать хэш фактических данных пикселя изображения. Но даже это можно отменить, сохранив, скажем, файл JPEG дважды с немного другим уровнем качества – тонкие различия в кодировке будут создавать изменения в значениях цвета пикселя.

Поэтому, если вы действительно хотите совместить содержимое изображения по форматам и качествам, вы открываете огромную банку червей 🙂

Быстрый ответ, но я рекомендую этот подход:

  • Используйте md5sum для хеширования изображений (для этого есть функция PHP).
  • Если вы используете базу данных, md5sum должен быть столбцом таблицы файлов изображений и индексировать таблицу этим полем.
  • В противном случае сохраните хэши в плоском файле следующим образом:

     68b329da9893e34099c7d8ad5cb9c940 file2.bmp da1e100dc9e7bebb810985e37875de38 file1.jpg