gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 22:57:18 26 4
gpt4 key购买 nike

我有以下代码

 // 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, 0, 0, 0, 0, $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() 在调整大小时返回黑色图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11483212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com