Какие есть решения на 2024 год для определения дубликата изображений на PHP?
Есть бэк на ларавел, где периодически загружаются изображения. Хотелось бы встроить туда перед загрузкой проверку на дубликат. Изображения естественно могут быть чуть другого размера, немного изменены и простое ведение базы хэшов изображений точно не подойдет.
Возможно, кто то решал подобную проблему или знает о каких то решениях не очень тяжелых в плане ресурсов, возможно какие то алгоритмы или мини нейронки преобразующие изображения в какой то хэш или вектор, которые можно хранить и сравнивать на похожесть при загрузке.
Алексей Уколов, вопрос и задан чтоб узнать о решениях которые используются. По запросу "php дубликат изображений" в QNA находит 3 вопроса. 1 текущий, 2ой задан более трёх лет назад, 3 вообще не имеет отношения к сути.
Буду благодарен если выскажите какое-нибудь решение, которое вам кажется самым оптимальным и не ресурсоёмким для бэка админки.
Место в s3 стоит копейки. Дешевле хранить дубли, чем защищаться и растить CPU/GPU на серверах для сопоставления. В зависимости от бизнеса, можно чистить бакеты по каким-то характеристикам. К примеру, нет обращений к изображению.
Просто ради интереса - а какого рода сервис, если не важно какое изображение загружено?
Ну например, один пользователь залил картинку. Второй такую же нашел, отфотошопил слегка (улучшил), залил, но его картинка не заливается, потому что есть похожая, и вместо нее отображается предыдущая худшего качества.
Сергей delphinpro, это для админки, а не для пользователей, цель чтобы не было повторяющихся, а не чтобы сэкономить место. Просто когда их много приходится вручную иногда пробегаться чтобы убедится, что такой картинки нет.
Alex, Вас спросили немного о другом...
Что решает именно эта задача? А что, если такая картинка есть? Как это мешает приложению?
цель чтобы не было повторяющихся, а не чтобы сэкономить место. Просто когда их много приходится вручную иногда пробегаться чтобы убедится, что такой картинки нет.
Просто "хочется" получается? В чём "изюминка" всех этих деяний?
N, задача чтобы не было 2-10 одинаковых картинок, куда еще подробнее? Вручную сверять каталог изображений которые загружены с увеличением их уже сложнее и хочется облегчить работу в админке :-)
Решение maksam07 отлично мне подходит, я думал о подобии такого алгоритма реализовать уменьшать до 8х8 и в каком то порядке из цвета пикселя сформировать числа и сравнивать их указывая порог похожести, а тут готовое решение примерно по такому же принципу.
да как раз думал про такую же идею уменьшить и каждый пиксель записать в виде числа rgb 0-255 или например 16ной системы , только про ч\б не догадался. Спасибо с чб к приведению 1 и 0 конечно в разы меньше хеш и больше шансов что дубликат будет обнаружен!
Alex, обрати внимание. Там не просто уменьшение и черно белая квантизация.
Там еще идет одна операция которая делает хеш толерантным к операциям линейных
коррекций RGB. Типа если пользователь покрутил яркость-контраст - то phash все равно
должен сохранятся.