मेरे पास यह सटीक है पहले एक ही मुद्दा।
मैंने जो किया उसे कॉपी करने के लिए स्वतंत्र महसूस करें, और उम्मीद है कि यह आपकी मदद करेगा / आपकी समस्या का समाधान करेगा।
मैंने इसे कैसे हल किया
मेरा पहला विचार जो विफल हो गया, जैसा कि आप सोच रहे होंगे, क्या मैंने हर एक छवि के लिए तार बनाना समाप्त कर दिया है (चाहे किसी भी आकार का हो)। लेकिन मैंने जल्दी ही यह पता लगा लिया कि यह आपके डेटाबेस को बहुत तेजी से भरता है, और यह प्रभावी नहीं था।
अगला विकल्प (जो काम करता है) एक छोटी छवि थी (जैसे आपका 5px
आईडिया), और मैंने ठीक वैसा ही किया, लेकिन 10px
. के साथ *10px
इमेजिस। जिस तरह से मैंने प्रत्येक छवि के लिए 'हैश' बनाया वह था imagecolorat()
समारोह।
rgb
receiving प्राप्त करते समय छवि के लिए रंग, मैंने उन्हें निकटतम 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
है।
टिप्स
-
बड़ा वह
50
rgb
. में है राउंडिंग, कम विशिष्ट आपकी खोज होगी (और इसके विपरीत)। -
अगर आप अपने एसक्यूएल चाहते हैं अधिक विशिष्ट होने के लिए, अतिरिक्त/विशिष्ट . स्टोर करना बेहतर हो सकता है डेटाबेस में छवि के बारे में जानकारी, ताकि आप डेटाबेस में मिलने वाली खोजों को सीमित कर सकें। जैसे . यदि पक्षानुपात
4:3
है , केवल छवियों को4:3
. के आसपास खींचें डेटाबेस से। (आदि) -
इसे पूरी तरह से प्राप्त करना कठिन हो सकता है
5px
*5px
, इसलिए एक सुझाव है phpthumb . मैंने इसे वाक्य रचना के साथ प्रयोग किया:
शुभकामनाएँ दोस्त, आशा है कि मैं मदद कर सकता हूँ।