web-dev-qa-db-ja.com

PHPで2つの画像を比較する

2つの画像を比較して同じファイルであるかどうかを確認するのは簡単で、MD5ファイルを投げますが、PHP Gdを使用して2つの画像が同じかどうかを判断することは可能です2つの画像の違い。2つの画像の違いを取得する場所がすべて白である場合(白または黒と仮定する場合)、その両方が同じ写真であることがわかります。

また、サイドノート:idは、同じサイズの2つの画像を取得して、オニオンスキンエフェクトを作成できるかどうかを知りたい(一方は50%、もう一方は50%)。

26
Joseph

ImageMagickは、PHP ImageMagick拡張機能を通じて、これに使用できるさまざまなツールを提供しています。

http://www.php.net/manual/en/function.imagick-compareimages.php

最大の問題は、そのライブラリのドキュメントがほとんど存在しないため、多くの試行錯誤が伴うことです。

18
kander
$md5image1 = md5(file_get_contents($image1));
$md5image2 = md5(file_get_contents($image2));
if ($md5image1 == $md5image2) {

}
14
Hamada Mido

libpuzzle は、画像を比較できるPHP拡張機能です。

9
pfrenssen

同様の質問がこれについて尋ねられましたStackoverflow threadそして私は自分用に何かを開発しました。他の人に役立つようにここに投稿します。

2つ(またはそれ以上)の画像を取り、それらの違いをチェックするオプションを提供します。使用する解像度、厳密性などのオプション。

私はより包括的なそれに関するブログ投稿を書きました。

3
Pat Cullen

PHP Gd Libraryでの画像比較関数 http://www.robert-lerner.com/imagecompare.php

3
TechNikh

2つのピクセルごとの同一の画像の違いが次のようなJPEG画像のセットを重複排除する必要がありました。

  • 異なるメタデータ画像には異なるIFD0:ModifyDateがありました
  • 異なるバイナリデータ画像はさまざまなソフトウェアによって可逆圧縮されました

私が使用したソリューションは次のとおりです。

  • createimagefromjpeg 関数を使用して画像を開きます
  • imagegd2 を使用してGd2形式で画像を保存します
  • ハッシュマッチングまたは文字列比較を使用してGd2バージョンを比較する
0
Salman A

それがそれほど簡単で解決策が終了するかどうかはわかりませんが、おそらく次から画像検出のアイデアを得ることができます:

PHPによる顔検出
画像ヌードフィルター(クラス)

0
Sarfraz

2つのファイルだけを比較する場合、データをハッシュしてから比較するのが完璧なソリューションです。多数のファイルを比較する場合は、まずサイズに基づいてファイルを並べ替えてから、同じサイズでのみ比較します。

0
mrd081