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

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

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

8 ответов


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 и я разработал что-то для моего собственного использования. Разместите его здесь, чтобы он мог помочь другим.

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

Я написал более полный blogpost на нем, а также.


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


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

распознавание лиц с помощью PHP
Изображение Наготы Фильтр (Класс)


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


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

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

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

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