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

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

Теги: , ,