私はこれを正確に持っています 以前に同じ問題。
私がしたことを自由にコピーしてください。うまくいけば、それがあなたの助けになる/あなたの問題を解決するでしょう。
解決方法
あなたが考えているのと同じように、失敗した私の最初のアイデアは、(サイズに関係なく)すべての画像に対して文字列を作成することになったということです。しかし、私はすぐにこれがあなたのデータベースを非常に速くいっぱいにすることを理解しました、そして効果的ではありませんでした。
次のオプション(機能します)は、小さい画像( 5px など)でした アイデア)、そして私はまさにそれをしましたが、 10px * 10px 画像。各画像の「ハッシュ」を作成した方法は、 imagecolorat()でした。 機能。
rgbを受信したとき 画像の色は、最も近い 50に丸めました。 、そのため、色はあまり具体的ではありませんでした。その数( 50 )は、具体的な方法に応じて変更したいものです 検索を行いたい。
例:
// Pixel RGB
rgb(105, 126, 225) // Original
rgb(100, 150, 250) // After rounding numbers to nearest 50
すべてのピクセルに対してこれを行った後( 10px * 10px 100個のrgb()が表示されます に戻って)、それらを配列に変換し、 base64_encode()としてデータベースに保存しました。 およびserialize() 。
類似の画像を検索するときは、アップロードしたい画像に対してまったく同じプロセスを実行し、データベースから画像「ハッシュ」を抽出してすべてを比較し、一致する丸められたrgb<を確認しました。 / code>
ヒント
-
大きい その
50rgbにあります 丸め、あまり具体的ではない 検索は次のようになります(またはその逆)。 -
SQLが必要な場合 具体的には、追加/特定を保存する方がよい場合があります データベース内の画像に関する情報。これにより、データベース内で取得する検索を制限できます。 例 。アスペクト比が
4:3の場合 、4:3の周りの画像のみをプルします データベースから。 (など) -
これを完全に
5pxにするのは難しい場合があります *5px、したがって、提案は phpthumb 。構文で使用しました:
幸運を祈る仲間、私が助けてくれることを願っています。