Каков наилучший способ проверить, является ли изображение уникальным с помощью PHP? Скажем, у меня есть каталог из 30 изображений (около 500 * 500 пикселей), а кто-то загружает другое изображение, что является хорошим способом проверить, не загружено ли загруженное изображение в каталог?
Есть ли способ создать хеш-изображения, которые можно легко сравнить? Затем я мог бы сохранить хэш изображений в каталоге и сравнить их с хешем загруженного изображения.
Вычислительная мощность – это не большая проблема, она не должна обрабатывать более нескольких снимков в минуту. Не факт, что изображения с разностью в один пиксель будут рассматриваться как разные изображения. Система должна просто иметь возможность отфильтровывать изображения, которые являются точно такими же.
запустите контрольную сумму в файле . Если она совпадает с той, которую вы уже имеете, то это, вероятно, то же точное изображение.
Используйте md5
или sha1
в файле изображения.
Система должна просто иметь возможность отфильтровывать изображения, которые являются точно такими же.
В этом случае вы могли бы просто забыть, что вы говорите об изображениях и просто рассматриваете их как двоичные файлы, используя hash_file()
для создания хэша.
Конечно, это также приведет к разным хэшам для изображений, которые отличаются только метаданными, такими как комментарии EXIF в изображениях JPEG. Вам придется решить, будет ли это проблемой для вас.
Байт-мутное сравнение файлов не удастся, даже если небольшая деталь, подобная тегу ID3, изменилась. Чтобы сравнить содержимое изображения, вам нужно будет открыть файл изображения и создать хэш фактических данных пикселя изображения. Но даже это можно отменить, сохранив, скажем, файл JPEG дважды с немного другим уровнем качества – тонкие различия в кодировке будут создавать изменения в значениях цвета пикселя.
Поэтому, если вы действительно хотите совместить содержимое изображения по форматам и качествам, вы открываете огромную банку червей 🙂
Быстрый ответ, но я рекомендую этот подход:
В противном случае сохраните хэши в плоском файле следующим образом:
68b329da9893e34099c7d8ad5cb9c940 file2.bmp da1e100dc9e7bebb810985e37875de38 file1.jpg