के साथ एक छवि में मुख्य रंग का पता लगाने मुझे लगता है कि Dribbble.com एक छवि में प्रमुख रंग का पता लगाने के साथ करता है कार्यक्षमता को दोहराने के लिए कोशिश कर रहा हूँ। नीचे दी गई छवि में आप Dribbble.com से एक स्क्रीनशॉट देख सकते हैं जो छवि में 8 मुख्य रंग बाईं ओर दिखाता है। छवि http://dribbble.com/shots/528033-Fresh-Easy?list=followingपीएचपी
मुझे PHP में ऐसा करने में सक्षम होने की आवश्यकता है, मुझे रंगों की आवश्यकता होने के बाद मैं उन्हें डेटाबेस में सहेज दूंगा ताकि प्रोसेसिंग को प्रत्येक पृष्ठ पर चलाने की आवश्यकता न हो भार।
कैसे एक छवि से बाहर इन रंगों पाने के लिए पर कुछ शोध के बाद, कुछ लोगों ने कहा कि आप बस पिक्सेल द्वारा एक छवि पिक्सेल की जांच और फिर रंग है कि सबसे अधिक पाए जाते हैं बचाने के। अन्य कहते हैं कि इसके लिए और भी कुछ है और जो रंग सबसे अधिक प्रचलित होते हैं वे वांछित प्रभाव नहीं देंगे। वे कहते हैं कि आपको छवि/रंगों को कम करने की आवश्यकता है (मैं इस बिंदु पर खो गया हूं)।
चूना शॉट नीचे एक जावास्क्रिप्ट पुस्तकालय है कि एक ही बात करता है, उस पृष्ठ को यहाँ http://lokeshdhakar.com/projects/color-thief/
देखी जा सकती है जाता है कि पेज मैं देख सकता है एक जावास्क्रिप्ट quantize.js
नाम की फ़ाइल के स्रोत देखने नीचे दी गई छवि में और परिणाम वास्तव में अच्छे हैं। तो मैं क्या है कि जावास्क्रिप्ट पुस्तकालय करती है, लेकिन ऐसा करने के लिए PHP के साथ सक्षम होने के लिए उम्मीद कर रहा हूँ और जी.डी./ImageMagick
मैं इस समारोह है कि PHP के साथ रंग लौट सकते हैं और एक छवि में ही गिना जाएगा मिल गया था लेकिन परिणामों के ऊपर जावास्क्रिप्ट संस्करण से अलग कर रहे हैं और ड्रिबल परिणाम
/**
* Returns the colors of the image in an array, ordered in descending order, where the keys are the colors, and the values are the count of the color.
*
* @return array
*/
function Get_Color()
{
if (isset($this->image))
{
$PREVIEW_WIDTH = 150; //WE HAVE TO RESIZE THE IMAGE, BECAUSE WE ONLY NEED THE MOST SIGNIFICANT COLORS.
$PREVIEW_HEIGHT = 150;
$size = GetImageSize($this->image);
$scale=1;
if ($size[0]>0)
$scale = min($PREVIEW_WIDTH/$size[0], $PREVIEW_HEIGHT/$size[1]);
if ($scale < 1)
{
$width = floor($scale*$size[0]);
$height = floor($scale*$size[1]);
}
else
{
$width = $size[0];
$height = $size[1];
}
$image_resized = imagecreatetruecolor($width, $height);
if ($size[2]==1)
$image_orig=imagecreatefromgif($this->image);
if ($size[2]==2)
$image_orig=imagecreatefromjpeg($this->image);
if ($size[2]==3)
$image_orig=imagecreatefrompng($this->image);
imagecopyresampled($image_resized, $image_orig, 0, 0, 0, 0, $width, $height, $size[0], $size[1]); //WE NEED NEAREST NEIGHBOR RESIZING, BECAUSE IT DOESN'T ALTER THE COLORS
$im = $image_resized;
$imgWidth = imagesx($im);
$imgHeight = imagesy($im);
for ($y=0; $y < $imgHeight; $y++)
{
for ($x=0; $x < $imgWidth; $x++)
{
$index = imagecolorat($im,$x,$y);
$Colors = imagecolorsforindex($im,$index);
$Colors['red']=intval((($Colors['red'])+15)/32)*32; //ROUND THE COLORS, TO REDUCE THE NUMBER OF COLORS, SO THE WON'T BE ANY NEARLY DUPLICATE COLORS!
$Colors['green']=intval((($Colors['green'])+15)/32)*32;
$Colors['blue']=intval((($Colors['blue'])+15)/32)*32;
if ($Colors['red']>=256)
$Colors['red']=240;
if ($Colors['green']>=256)
$Colors['green']=240;
if ($Colors['blue']>=256)
$Colors['blue']=240;
$hexarray[]=substr("0".dechex($Colors['red']),-2).substr("0".dechex($Colors['green']),-2).substr("0".dechex($Colors['blue']),-2);
}
}
$hexarray=array_count_values($hexarray);
natsort($hexarray);
$hexarray=array_reverse($hexarray,true);
return $hexarray;
}
else die("You must enter a filename! (\$image parameter)");
}
तो मैं किसी को भी जानता है कि कैसे मैं PHP के साथ इस तरह के एक काम कर सकते हैं पूछ रहा हूँ? संभवत: कुछ ऐसा पहले से मौजूद है जो आपको पता करने के लिए एक कदम रखने के बारे में जानता है या किसी भी सुझाव की सराहना की जाएगी
http://stackoverflow.com/questions/3468500/detect-overall-Average-color-of-the- चित्र –
@aSeptik ऐसा लगता है कि मैंने पहले ही पोस्ट किया है कोड – JasonDavis
क्या आपने कोशिश की है 'php' के लिए Google को खोजने के लिए छवि से रंग पैलेट प्राप्त करें "मैंने कई परिणामों की स्थापना की; बस पूछ रहा है ... –