gpt4 book ai didi

php - 如何确保 JPEG 图像有效并且可以被 PHP 处理?

转载 作者:行者123 更新时间:2023-12-02 05:30:24 24 4
gpt4 key购买 nike

我有这个 JPEG,它一直给 Resizer library 中的函数 imagesx($this->image) 带来问题我正在使用。我可以使用浏览器查看图像,但在尝试调整大小时出现错误:

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

如果这个文件会抛出错误,我可以不处理它。我如何使用 PHP 检查此图像是否可以被 PHP 的图像函数正确处理?


调用库的代码

// Download the photo
$img_content = file_get_contents($url);
if($img_content !== FALSE) {
file_put_contents($img_documentroot . $img_subpath . $img_filename . '_tmp.jpg',
$img_content);
}

echo $url . '<br>';
echo $img_documentroot . $img_subpath . $img_filename . '_tmp.jpg<br>';
ob_flush();
flush();

// Resize photo
Resizer::open( $img_documentroot . $img_subpath . $img_filename . '_tmp.jpg' )
->resize(300, 300, 'landscape' )
->save($img_documentroot . $img_subpath . $img_filename . '.jpg' , 90 );

// Thumbnail photo
Resizer::open( $img_documentroot . $img_subpath . $img_filename . '_tmp.jpg' )
->resize(100, 100, 'crop' )
->save($img_documentroot . $img_subpath . $img_filename . '.jpg' , 90 );

输出

我还回显了正在调整大小的图像的完整路径。

http://www.ApartmentsInAllstonMA.com/Images/Apts/132847_kn1.jpg
/home/photos/public_html/2012/0917/2516539_7_tmp.jpg
resource(127) of type (gd)
resource(130) of type (gd)
http://www.ApartmentsInMedford.com/Images/Apts/132847_lv2.jpg
/home/photos/public_html/2012/0917/2516539_11_tmp.jpg
resource(163) of type (gd)
resource(166) of type (gd)
http://www.AllstonApartmentX.com/images/agents/61.jpg
/home/photos/public_html/2012/0917/2516539_12_tmp.jpg
bool(false)

更新

这是导致库返回 false 值的代码片段。

private function open_image( $file )
{

// If $file isn't an array, we'll turn it into one
if ( !is_array($file) ) {
$file = array(
'type' => File::mime( strtolower(File::extension($file)) ),
'tmp_name' => $file
);
}

$mime = $file['type'];
$file_path = $file['tmp_name'];

switch ( $mime )
{
case 'image/pjpeg': // IE6
case File::mime('jpg'): $img = @imagecreatefromjpeg( $file_path ); break;
case File::mime('gif'): $img = @imagecreatefromgif( $file_path ); break;
case File::mime('png'): $img = @imagecreatefrompng( $file_path ); break;
default: $img = false; break;
}

return $img;
}

最佳答案

检查mime类型是保证JPEG图像有效性的一个很好的方法。以下是如何做到这一点。

$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type
$type = finfo_file($finfo, $filename) . "\n";
if($type == "image/jpeg") {
//Valid JPEG Image
}
finfo_close($finfo);

根据您的错误,您发送的是 bool 值而不是图像资源

关于php - 如何确保 JPEG 图像有效并且可以被 PHP 处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12477035/

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