Сравнить 2 изображений в php

Сравнение двух изображений, чтобы проверить, являются ли они обоими одинаковыми файлами, легко распаковывает файлы MD5, но возможно ли или даже правдоподобно определить, являются ли 2 изображения одинаковыми, используя PHP GD, чтобы получить разницу между обоими изображениями. Если мы найдем разницу между ними, и все было белым (id белым или даже черным), тогда мы теперь узнаем его и ту же фотографию?

Также обратите внимание: id хотел бы узнать, возможно ли получить 2 изображения одинакового размера, чтобы создать эффект луковой кожи, 50% прозрачности на 1 и 50% с другой.

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, которое может сравнивать изображения.

Аналогичный вопрос был задан в этом потоке Stackoverflow, и я разработал что-то для собственного использования. Отправьте его сюда, чтобы он мог помочь другим.

Он принимает два (или более изображений) и дает вам варианты проверки разницы между ними. Варианты, такие как разрешение на использование и строгость.

Я также написал более подробный блог-план .

Функция сравнения изображений в PHP с библиотекой GD http://www.robert-lerner.com/imagecompare.php

Не уверен, что это так просто и решение выходит, но, вероятно, вы можете получить представление об обнаружении изображений:

Распознавание лиц с помощью PHP
Фильтр изображения изображения (класс)

Если вы сравниваете только два файла, тогда хеширование данных, а затем сравнение – идеальное решение. Если вы сравниваете большое количество файлов, лучше отсортируйте их сначала по размеру, а затем сравните только с тем же размером.

Мне пришлось дедуплицировать набор изображений JPEG, где разница между двумя пиксельными пиксельными идентичными изображениями была:

  • разные метаданные, например, изображения имели разные IFD0: ModifyDate
  • разные двоичные данные, например, изображения были без потерь сжаты другим программным обеспечением

Решение, которое я использовал, было следующим:

  • откройте изображение, используя функцию createimagefromjpeg
  • сохранить изображение в формате GD2 с помощью imagegd2
  • сравнить версии GD2 с использованием сравнения хешей или сравнения строк