Php 如何检查和图像是否为单色或空?

Php 如何检查和图像是否为单色或空?,php,image,gd,Php,Image,Gd,我需要阻止用户上传空白配置文件图像。对于空白图像,我指的是全白色或任何其他全彩图像。 我认为最好的方法是检查图像是否只包含一种颜色,但我不知道怎么做 我试图在上传图片后检查这个,只是为了简化事情 有人能帮我吗?检查整个图像 1) 将图像大小调整为较小的图像(例如,将其调整为原始大小/10或类似的大小…) 2) 用于获取图像大小 3) 循环遍历像素,保存第一个像素的颜色并继续,直到位置x、y上的像素颜色不同,或者直到不再有未选中的像素 <?php function isColorS

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

我试图在上传图片后检查这个,只是为了简化事情

有人能帮我吗?

检查整个图像 1) 将图像大小调整为较小的图像(例如,将其调整为原始大小/10或类似的大小…) 2) 用于获取图像大小 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;
}

像这样的@汉谟拉比谢谢,但我用的是GD而不是Magick。我只需要知道所有像素是否都是相同的颜色。有些人建议将图像大小调整为几个像素,然后逐像素检查。我不知道这是否是最好的方法,但我不知道如何让它起作用。再次感谢。谢谢@Eakethet,我已经测试了你的想法,它成功了。无论如何,正如我刚刚测试过的,这不会阻止任何用户上传看起来像空白图像的图像,即使它不是真的。如果图像是99%相同的白色像素,并且只有一个像素稍有不同,则会发布图像,因为脚本发现并非每个像素都相同。这不是你的解决方案的问题,这是我试图阻止这种情况发生的一个问题。再次感谢。@NicoSanchez好吧,你可以试试人工智能图像识别。我认为会有一些api服务,如果您想实现自己的解决方案,也可以使用tensorflow及其python库。如果您想在一些简单的php函数中处理它,您还可以尝试计算图像中不同颜色的数量(可能有一些简单的函数,或者调整图像大小)。你们也可以很容易地发现,是否只有一条直线,或者是更复杂的形状。但我仍然建议对那些被拒绝的配置文件进行一些手动验证。