【问题标题】:Detecting whether an image is corrupted or broken检测图像是否损坏或损坏
【发布时间】:2012-04-13 20:57:51
【问题描述】:

我需要以编程方式检查用户在我的应用中选择作为壁纸的图像是否损坏或损坏...... 基本上我为用户提供了选择他自己的图像作为壁纸的选项。现在,当图像加载时,我只想检查它是否以某种方式损坏.......

【问题讨论】:

标签: php javascript python image


【解决方案1】:

如果您正在寻找 PHP 解决方案而不是 javascript 解决方案(可能的重复项不提供),您可以在 PHP 中使用 GD 的 getimagesize() 并查看它返回的内容。当提供的图片格式无效时,它会返回 false 并抛出错误。

【讨论】:

  • 图像已损坏,但图像大小仍然存在。
【解决方案2】:

这是一个 PHP CLI 脚本,您可以在一个充满图像的目录上运行,它会根据imagecreatefrom***() 测试记录哪些文件已损坏。它可以只记录坏文件或采取行动并删除它们。

https://github.com/e-ht/literate-happiness

您还可以将其插入数据库,以对您可能存储的图像路径执行操作。

这是它使用的功能的核心:

$loopdir = new DirectoryIterator($dir_to_scan);
foreach($loopdir as $fileinfo) {
    if(!$fileinfo->isDot()) {
        $file = $fileinfo->getFilename();
        $file_path = $dir_to_scan . '/' . $file;
        $mime_type = mime_content_type($file_path);
        switch($mime_type) {
            case "image/jpg":
            case "image/jpeg":
                $im = imagecreatefromjpeg($file_path);
                break;
            case "image/png":
                $im = imagecreatefrompng($file_path);
                break;
            case "image/gif":
                $im = imagecreatefromgif($file_path);
                break;
        }
        if($im) {
            $good_count++;
        }
        elseif(!$im) {
            $bad_count++;
        }
    }
}

【讨论】:

  • 这对我有用。在某些情况下,getimagesize 抛出了我无法捕捉到的错误,但这在所有情况下都有效。谢谢。
【解决方案3】:

这似乎对我有用。

<?php
  $ext = strtolower(pathinfo($image_file, PATHINFO_EXTENSION));
  if ($ext === 'jpg') {
    $ext = 'jpeg';
  }
  $function = 'imagecreatefrom' . $ext;
  if (function_exists($function) && @$function($image_file) === FALSE) {
    echo 'bad img file: ' . $image_file . ' ' . $function;
  }
?>

【讨论】:

  • 你在echo 'bad img file: ' . $image_file . ' ' . $function);有一个错字
  • *改用这个:* $function = 'imagecreatefrom' . strtolower($ext);
猜你喜欢
  • 1970-01-01
  • 2012-08-31
  • 2013-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 2017-09-28
相关资源
最近更新 更多