Этот класс представляет собой решение для поиска наиболее доминирующих цветов, используемых в изображении, используется только PHP код без каких-либо специальных расширений PHP, за исключением функций GD библиотеки. Вот непосредственно сам класс:

                        
class GetMostCommonColors
{
/* Имя файла изображения (это может быть JPG, GIF или PNG изображения)
@var string */
var $image;

/* Возвращает цвет изображения в массив, упорядоченный в порядке убывания, где коды цвета и количество пикселей занятых цветом.
@return array */
function Get_Color()
{
if (isset($this->image))
{
$PREVIEW_WIDTH = 150; // Изменияем размер изображения.
$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]); // Копируем и изменяем размеры части изображения с пересэмплированием!
$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; // Сокращаем количество цветов, чтобы не было повторений.
$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("Вы должны указать имя файла! ($image параметр)");
}
}
0 17 0
0

Нет фото
Chainsaw * [мошенник]
• 27 дек 2014, 15:13


шо за бидлокод *