Image Magick. Определяем изображение с преобладающим цветом.

Автор: admin 05 Jun 2010 Отзывы 1 отзыв

Иначе говоря, изображение в котором какой либо цвет составляет основную долю. Примеры - кадры из конца или начала видеоролика. Функция, аргумент которой путь к изображению:

function checkBadImage($img)
{
exec(__IM_PATH.’ ‘.$img.’ -colors 16 -depth 8 -format “%c” histogram:info:| head -n 5′, $res);
if(is_array($res))
{
foreach($res as $str){$s=explode(”:”,$str,2);$pixels[]=trim($s[0]);}
if(strlen($pixels[0]) > strlen($pixels[1])){return false;}
}
return true;
}

,где:

-colors 16, приводит изображение к 16 цветам, что нужно для приведения оттенков преобладающего цвета к одному

-n 5, выводит 5 цветов, можно 2, можно все, неважно, необходимый минимум два.

Если выполнить команду exec, вывод будет примерно таким:

121311 rgb(146,89,80)
121234 rgb(146,89,81)

Первое число - количество пикселей, второе - RGB цвет. Строки отсортированы по убыванию количества пикселей. Таким образом, сравнив две первых строки, приходим к выводу, если числа отличаются на порядок, значит тестируемое изображение имеет преобладающий цвет, проще говоря изображение имеет незначительное количество пикселей других цветов. Функция возвратит false в данном случае.

Рубрика: Programming

Теги: , ,

Ссылка на заметку:

1 отзыв

sadad пишет:
12:21 4.12.2010

конвертируешь в 16 цветов.
я по другому делал в GD- условиями.

Оставьте свой отзыв

Имя Сообщение
E-mail (обязательно)
Введите 5 + 4 =