如何检查和图像是单色还是空?

时间:2018-04-20 12:45:30

标签: php image gd

我需要阻止用户上传空白的个人资料图片。对于空白图像,我指的是全白色或任何其他全彩色图像。 我认为最好的方法是检查图像是否只包含一种颜色,但我不知道该怎么做。

我试图在上传图片后检查一下,只是为了简化。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

检查整个图像

1)将图像调整为较小的图像(例如将其调整为原始大小/ 10或者像这样......) 2)使用this function获取图像大小 3)循环通过像素,保存第一个像素的颜色并继续直到位置x,y上的像素颜色不同或者直到不再检查像素为止。

    <?php

function isColorSame($imgname){
$img = imagecreatefrompng($imgname);
list($width, $height, $type, $attr) = getimagesize($imgname);

$x = 0;
$y = 0;

$starterColor = imagecolorat(0, 0, $img);

while($x < $width){
    while($y < $height) {
        if (imagecolorat($x, $y, $img) !== $starterColor){
            return false;
        }
        $y++;
    }
    $x++;
}
return true;
}

猜测

通过生成随机x,y并检查此位置的颜色来检查几个像素(例如100个像素)。这不是100%肯定,但在此之后,您可以将图像传递给检查所有像素的函数。