Pau*_*ulM 6 php imagemagick php-gd
我正在使用Curl via Proxies用我开发的刮刀下载图像.
不幸的是,它得到的奇怪图像看起来像这些,最后一个是完全空白的:/

有没有人有办法确定图像是否具有大部分灰色或是完全空白/白色,这些确实是损坏的图像?
我已经在这里做了很多关于其他问题的检查,但我对其他解决方案没有太多运气.所以请注意建议这是重复的.
谢谢
在了解imgcolorat之后,我进行了搜索并偶然发现了一些代码.我想出了这个:
<?php
$file = dirname(__FILE__) . "/images/1.jpg";
$img = imagecreatefromjpeg($file);
$imagew = imagesx($img);
$imageh = imagesy($img);
$xy = array();
$last_height = $imageh - 5;
$foo = array();
$x = 0;
$y = 0;
for ($x = 0; $x <= $imagew; $x++)
{
for ($y = $last_height;$y <= $imageh; $y++ )
{
$rgb = @imagecolorat($img, $x, $y);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
if ($r != 0)
{
$foo[] = $r;
}
}
}
$bar = array_count_values($foo);
$gray = (isset($bar['127']) ? $bar['127'] : 0) + (isset($bar['128']) ? $bar['128'] : 0) + (isset($bar['129']) ? $bar['129'] : 0);
$total = count($foo);
$other = $total - $gray;
if ($gray > $other)
{
echo "image corrupted \n";
}
else
{
echo "image not corrupted \n";
}
?>
Run Code Online (Sandbox Code Playgroud)
有人看到这个潜在的陷阱吗?我想到了获得图像的最后几行,然后将r 127,128,129(灰色)的总和与其他颜色的总和进行比较.如果灰色大于其他颜色,则图像肯定会损坏.
意见欢迎!:)
如果它返回的图像是有效文件,那么我建议运行两次抓取(即下载两次并检查它们是否相同)。
另一种选择是检查图像的最后几个像素(即右下角),看看它们是否与灰色完全匹配。如果是这样,请重新下载。(显然,如果您下载的图像在该角落实际上应该是灰色的,并且颜色完全相同,则这种方法会失败......但是如果您检查最后几个像素,它应该将这种可能性降低到可接受的水平)。
| 归档时间: |
|
| 查看次数: |
2086 次 |
| 最近记录: |