php – imagecreatefromjpeg()在调整大小时返回黑色图像

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – imagecreatefromjpeg()在调整大小时返回黑色图像脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下代码

// load image and get image size
  $img = imagecreatefrompng( "{$pathToImages}{$fname}" );

  $width = imagesx( $img );
  $height = imagesy( $img );


  // calculate thumbnail size
  $new_width = $imageWidth;
  $new_height = 500;

  // create a new temporary image
  $tmp_img = imagecreatetruecolor( $new_width,$new_height );

  // copy and resize old image into new image 
  imagecopyresized( $tmp_img,$img,$new_width,$new_height,$width,$height );

它适用于某些图像..但对于某些图像,它显示错误

Warning: imagecreateFromjPEg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: 

Warning: imagesx() expects parameter 1 to be resource,boolean given

Warning: imagesy() expects parameter 1 to be resource,boolean given

我也启用了

gd.jpeg_ignore_warning = 1

PHP.ini中

任何帮助赞赏.

解决方法

根据 a blog post from (Feb 2010),它是imagecreatefromjpeg实现中的一个错误,它应返回false但会引发错误.

解决方案是检查图像的文件类型(我删除了对imagecreatefromjpeg的重复调用,因为它完全是多余的;我们之前已经检查过正确的文件类型,如果由于某些其他原因发生错误,imagecreatefromjpeg将正确返回false):

function imagecreatefromjpeg_if_correct($file_tempname) {
    $file_dimensions = getimagesize($file_tempname);
    $file_type = strtolower($file_dimensions['mime']);

    if ($file_type == 'image/jpeg' || $file_type == 'image/pjpeg'){
        $im = imagecreatefromjpeg($file_tempname);
        return $im;
    }
    return false;
}

然后你可以这样写你的代码

$img = imagecreatefrompng_if_correct("{$pathToImages}{$fname}");
if ($img == false) {
    // report some error
} else {
    // enter all your other functions here,because everything is ok
}

当然,如果你想打开一个png文件,你也可以为png做同样的事情(就像你的代码建议的那样).实际上,通常你会检查你的文件确实有哪种文件类型,然后在三者之间调用正确的函数(jpeg,png,gif).

脚本宝典总结

以上是脚本宝典为你收集整理的php – imagecreatefromjpeg()在调整大小时返回黑色图像全部内容,希望文章能够帮你解决php – imagecreatefromjpeg()在调整大小时返回黑色图像所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。