php – imagecreatefromjpeg()在调整大小时返回黑色图像
发布时间:2020-12-13 17:20:14 所属栏目:PHP教程 来源:网络整理
导读:我有以下代码 // 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
我有以下代码
// 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). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |