Saya pernah mengalami ini tepat masalah yang sama sebelumnya.
Jangan ragu untuk menyalin apa yang saya lakukan, dan semoga itu akan membantu Anda / menyelesaikan masalah Anda.
Bagaimana saya menyelesaikannya
Ide pertama saya yang gagal, mirip dengan apa yang mungkin Anda pikirkan, adalah saya akhirnya membuat string untuk setiap gambar (tidak peduli berapa ukurannya). Tapi saya segera menyelesaikannya. Ini mengisi database Anda dengan sangat cepat, dan tidak efektif.
Opsi berikutnya (yang berfungsi) adalah gambar yang lebih kecil (seperti 5px
Anda ide), dan saya melakukan hal itu, tetapi dengan 10px
*10px
gambar-gambar. Cara saya membuat 'hash' untuk setiap gambar adalah imagecolorat()
fungsi.
Saat menerima rgb
warna untuk gambar, saya membulatkannya ke 50
terdekat , sehingga warnanya kurang spesifik. Nomor itu (50
) yang ingin Anda ubah bergantung pada seberapa spesifik Anda ingin pencarian Anda seperti itu.
misalnya:
// Pixel RGB
rgb(105, 126, 225) // Original
rgb(100, 150, 250) // After rounding numbers to nearest 50
Setelah melakukan ini pada setiap piksel (10px
*10px
akan memberi Anda 100 rgb()
's back), saya kemudian mengubahnya menjadi array, dan menyimpannya di database sebagai base64_encode()
dan serialize()
.
Saat melakukan pencarian untuk gambar yang mirip, saya melakukan proses yang sama persis dengan gambar yang ingin mereka unggah, dan kemudian mengekstrak 'hash' gambar dari database untuk membandingkan semuanya, dan melihat apa yang cocok dengan rgb
's.
Kiat
-
Lebih Besar
50
itu ada dirgb
pembulatan, kurang spesifik pencarian Anda akan (dan sebaliknya). -
Jika Anda ingin SQL . Anda untuk lebih spesifik, mungkin lebih baik menyimpan ekstra/spesifik info tentang gambar di database, sehingga Anda dapat membatasi pencarian yang Anda dapatkan di database. misalnya . jika rasio aspek adalah
4:3
, hanya tarik gambar di sekitar4:3
dari database. (dll) -
Mungkin sulit untuk mendapatkan
5px
ini dengan sempurna *5px
, jadi sarannya adalah phpthumb . Saya menggunakannya dengan sintaks:
Selamat mencoba sobat, semoga bisa membantu.