私のユーザーは私のウェブサイトに画像をアップロードしています。最初に、既にアップロードされた画像を最初に提供したいと思います。私の考えは、1.既存のすべての画像のある種の画像「ハッシュ」を作成することです2.新しくアップロードされた画像のハッシュを作成し、データベース内の他の画像と比較します
http://www.pureftpd.org/project/libpuzzleやhttp://phash.org/などの興味深い解決策をいくつか見つけましたが、1 つ以上の問題がありました。
- PHP の非標準の拡張機能が必要です (または PHP にまったくない) - 私にとっては問題ありませんが、私の制御なしに多くのホスティング環境で使用されている人気のある CMS のプラグインとして作成したいと考えています。
- 彼らは 2 つの画像を比較していますが、1 対多数 (たとえば数千) を比較する必要があり、1 つずつ比較するのは非常に効果がありません/時間がかかります ... ...
非常に類似した画像のみを見つけても問題ありません(たとえば、サイズが異なる、jpgが再保存されている、またはjpg圧縮率が異なるなど)。
私が得た唯一のアイデアは、画像のサイズをたとえば 5px*5px* 256 色に変更し、その文字列表現を作成してから同じものを見つけることです。しかし、サイズが異なる同じ画像が2つあるだけでも、色にわずかな違いが生じている可能性があるため、100%同じ画像を見つけるだけでは意味がありません。
そのため、画像の文字列表現の適切な形式が必要です。これは、SQL関数で使用して、同様の方法やその他の良い方法を見つけることができます。たとえば、phash は知覚ハッシュを作成するため、2 つの数値が近い場合は画像も近いはずなので、最も近い距離を見つけるだけで済みます。しかし、これも外部ライブラリです。
簡単な方法はありますか?