我有这个密码:

$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类型)。发生了什么事,我该怎么解决?
我试过,但没用:
检查php.ini中的*内存限制*。
检查磁盘空间
设置*gd.jpeg_ignore_警告*
有趣的是,在本地服务器上一切正常(当然是使用相同的映像)。

最佳答案

创建函数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);
?>

祝你好运!

关于php - 图片不是有效的JPEG,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21115679/

10-09 18:08
查看更多