图像不是有效的JPEG

时间:2014-01-14 14:12:35

标签: php image loading

我有这段代码:

$image = imagecreatefromjpeg($filename);
$size = getimagesize($filename, $info);

var_dump($image);
var_dump($size);

我收到了这个输出:

Warning: imagecreatefromjpeg(): gd-jpeg: JPEG library reports unrecoverable error
Warning: imagecreatefromjpeg(): 'my_image.jpg' is not a valid JPEG file

bool(false)

array(7) {
  [0]=>
  int(22)
  [1]=>
  int(30)
  [2]=>
  int(2)
  [3]=>
  string(22) "width="22" height="30""
  ["bits"]=>
  int(8)
  ["channels"]=>
  int(3)
  ["mime"]=>
  string(10) "image/jpeg"
}

我收到警告,该图片不是有效的 JPEG 文件,并且不加载该文件,但 getimagesize 表示 JPEG 文件( mime type )。发生了什么,我该如何解决这个问题?

我尝试了这个,但它没有帮助我:

  1. php.ini
  2. 中检查* memory_limit *
  3. 检查磁盘空间
  4. set * gd.jpeg_ignore_warning *
  5. 有趣的是,在本地服务器上一切正常(当然使用相同的图像)。

1 个答案:

答案 0 :(得分:1)

创建功能 isPNG

<?php

function isPNG($file){
    return preg_match('/'.quotemeta('PNG').'/i', file_get_contents($file));
}

?>

编辑代码

<?php

    if(preg_match('/\.(png)$/i', $filename) || isPNG($filename)){
        $image = imagecreatefrompng($filename);
    }else{
        $image = imagecreatefromjpeg($filename);
    }

    $size = getimagesize($filename, $info);

    var_dump($image);
    var_dump($size);
?>
祝你好运!