聘我网

新概念招聘3.0

PHP检测图片是否是草图?

vote up0vote downstar

草图:

alt text

Logo:

alt text

程序中可以识别否?

 

1 个答复

vote up0vote downcheck

可以根据草图颜色的饱和度一般较低,而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的为草图,就可以拿来进行判断了

链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.