ErrorException: imagecreatetruecolor(): Intervention\Image\Image::resize() 时文件中的图像尺寸无效
ErrorException: imagecreatetruecolor(): Invalid image dimensions in file while Intervention\Image\Image::resize()
我正在处理 Laravel 项目,我需要调整图像大小,并 return 从控制器将其作为文件。如果图像的宽度或高度参数等于 0,我必须计算另一个参数。
我这样试过(因为我在库 http://image.intervention.io/api/resize 的文档中找到了它):
public function viewImage($w, $h, $path){
$image = Image::where('path', $path)->first();
if($image){
$manager = new ImageManager(array('driver' => 'gd'));
if ($w === 0){
$img = $manager->make(asset("storage/galleries/".$image->fullpath))
->resize($w, $h, function ($constraint) {
$constraint->aspectRatio();
});
return $img->response('jpg');
}
else{
if ($h === 0){
$img = $manager->make(asset("storage/galleries/".$image->fullpath))
->resize($w, $h, function ($constraint) {
$constraint->aspectRatio();
});
return $img->response('jpg');
}
$img = $manager->make(asset("storage/galleries/".$image->fullpath))->resize($w, $h);
return $img->response('jpg');
}
}
...
但它给我这样的错误:
ErrorException: imagecreatetruecolor(): Invalid image dimensions in file C:\xampp\htdocs\PROGRAMATOR.SK_API\vendor\intervention\image\src\Intervention\Image\Gd\Commands\ResizeCommand.php on line 47
我使用 Intervention\Image\Image 库
你能帮帮我吗?
首先,laravelreturn字符串中的路由参数。所以 $w
和 $h
是字符串。
你有这些选择
在函数的开头将 $w
和 $h
转换为 int
$w = intval($w);
$h = intval($h);
更改您的条件比较。 PHP 能够比较 String 和 int 值。您当前的比较 return 每次都是错误的。请记住,"0" === 0
将始终导致 false
,因为 php 也会比较变量类型。但是,如果您使用 "0" == 0
这将 return true
.
此外,在宽度或高度为 0
或 "0"
的情况下,将其更改为 null
,因此调整大小方法将按预期工作。
我正在处理 Laravel 项目,我需要调整图像大小,并 return 从控制器将其作为文件。如果图像的宽度或高度参数等于 0,我必须计算另一个参数。 我这样试过(因为我在库 http://image.intervention.io/api/resize 的文档中找到了它):
public function viewImage($w, $h, $path){
$image = Image::where('path', $path)->first();
if($image){
$manager = new ImageManager(array('driver' => 'gd'));
if ($w === 0){
$img = $manager->make(asset("storage/galleries/".$image->fullpath))
->resize($w, $h, function ($constraint) {
$constraint->aspectRatio();
});
return $img->response('jpg');
}
else{
if ($h === 0){
$img = $manager->make(asset("storage/galleries/".$image->fullpath))
->resize($w, $h, function ($constraint) {
$constraint->aspectRatio();
});
return $img->response('jpg');
}
$img = $manager->make(asset("storage/galleries/".$image->fullpath))->resize($w, $h);
return $img->response('jpg');
}
}
...
但它给我这样的错误:
ErrorException: imagecreatetruecolor(): Invalid image dimensions in file C:\xampp\htdocs\PROGRAMATOR.SK_API\vendor\intervention\image\src\Intervention\Image\Gd\Commands\ResizeCommand.php on line 47
我使用 Intervention\Image\Image 库
你能帮帮我吗?
首先,laravelreturn字符串中的路由参数。所以 $w
和 $h
是字符串。
你有这些选择
在函数的开头将
$w
和$h
转换为 int$w = intval($w);
$h = intval($h);
更改您的条件比较。 PHP 能够比较 String 和 int 值。您当前的比较 return 每次都是错误的。请记住,
"0" === 0
将始终导致false
,因为 php 也会比较变量类型。但是,如果您使用"0" == 0
这将 returntrue
.
此外,在宽度或高度为 0
或 "0"
的情况下,将其更改为 null
,因此调整大小方法将按预期工作。