可以根据草图颜色的饱和度一般较低,而logo的颜色比较丰富:
function Saturation($color)
{
$color = array_map('hexdec', str_split($color, 2));
if (max($color) > 0)
{
return (max($color) - min($color)) / max($color);
}
return 0;
}
$images = array('./logo.jpg', './caotu.jpg');
foreach ($images as $imageStr)
{
$sat = 0;
$image = ImageCreateFromString(file_get_contents($imageStr));
for ($x = 0; $x < ImageSX($image); $x++)
{
for ($y = 0; $y < ImageSY($image); $y++)
{
$color = ImageColorsForIndex($image, ImageColorAt($image, $x, $y));
if (is_array($color) === true)
{
$sat += Saturation(dechex($color['red']) . dechex($color['green']) . dechex($color['blue']));
}
}
}
echo $imageStr . ': ' .($sat / (ImageSX($image) * ImageSY($image)));
echo '<hr />';
}
设置一个阈值,比如平均饱和度小于0.03的为草图,就可以拿来进行判断了