我需要阻止用户上传空白的个人资料图片。对于空白图像,我指的是全白色或任何其他全彩色图像。 我认为最好的方法是检查图像是否只包含一种颜色,但我不知道该怎么做。
我试图在上传图片后检查一下,只是为了简化。
有人可以帮我吗?
答案 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%肯定,但在此之后,您可以将图像传递给检查所有像素的函数。