Сравните 2 изображения в php
Сравнение 2 изображений, чтобы увидеть, являются ли они одинаковыми файлами, легко, выбросил файлы MD5, но возможно ли или даже правдоподобно определить, совпадают ли 2 изображения, используя PHP GD, чтобы получить разницу между двумя изображениями. Если бы мы могли найти разницу между ними, и все это было белым (я полагаю, белым или даже черным), то теперь мы знали бы, что это одна и та же фотография?
Также примечание: я хотел бы знать, возможно ли получить 2 изображения одинакового размера для создания луковой кожуры эффект, прозрачность 50 % на 1 и 50% на другом.
8 answers
ImageMagick предлагает различные инструменты, которые вы можете использовать для этого, с помощью расширения PHP ImageMagick.
Http://www.php.net/manual/en/function.imagick-compareimages.php
Самая большая проблема заключается в том, что документация для этой библиотеки в значительной степени отсутствует, поэтому потребуется много проб и ошибок.
$md5image1 = md5(file_get_contents($image1));
$md5image2 = md5(file_get_contents($image2));
if ($md5image1 == $md5image2) {
}
Libpuzzle - это расширение PHP, которое может сравнивать изображения.
Аналогичный вопрос был задан по этому поводу Поток стекового потока и я разработал кое-что для собственного использования. Разместите его здесь, чтобы он мог помочь другим.
Требуется два (или более изображений) и дает вам возможность проверить разницу между ними. Такие параметры, как разрешение для использования и строгость.
Я написал более полный запись в блоге об этом также.
Функция сравнения изображений в PHP с библиотекой GD http://www.robert-lerner.com/imagecompare.php
Не уверен, что это так просто, и решение выходит, но, вероятно, вы можете получить представление об обнаружении изображений из:
Распознавание лиц с помощью PHP
Фильтр обнаженности Изображения (Класс)
Если вы сравниваете только два файла, то хеширование данных, а затем сравнение - идеальное решение. Если вы сравниваете большое количество файлов, то лучше сначала отсортировать их по размеру, а затем сравнивать только с одинаковым размером.
Мне пришлось дедуплицировать набор изображений в формате JPEG, где разница между двумя идентичными изображениями пиксель на пиксель составляла:
- разные метаданные, например, изображения имели разные IFD0:изменить
- различные двоичные данные, например изображения, были сжаты без потерь различным программным обеспечением
Решение, которое я использовал, было следующим:
- откройте изображение с помощью
createimagefromjpeg
функция - сохраните изображение в формате GD2 с помощью
imagegd2
- сравнить версии GD2, использующие сопоставление хэшей или сравнение строк