【发布时间】:2018-03-04 22:04:14
【问题描述】:
我正在尝试将所有上传的图片更改为 png 格式。我正在为 Laravel 使用 Intervention Image 包,并调用编码函数。图像文件不会更改为 .png
这是我的上传脚本:(所有内容都在上传、调整大小并且似乎在压缩。只是没有转换为 png 文件)
if($request->hasFile('listing_image')){
$classifiedImg = $request->file('listing_image');
$filename = 'listing'.'-'.uniqid().'.'.$classifiedImg->getClientOriginalExtension();
Image::make($classifiedImg)->encode('png', 65)->resize(760, null, function ($c) {
$c->aspectRatio();
$c->upsize();
})->save(public_path('/images/users/listing-images/' . $filename));
$classified->listing_image = $filename;
$classified->save();
}else{
$classified->save();
}
我在这部分做错了吗:
Image::make($classifiedImg)->encode('png', 65)->resize(760, null, function ($c)...
或者这是导致问题的原因:
getClientOriginalExtension();
【问题讨论】:
-
是的,OR 是否会导致问题 部分是正确的,请尝试检查您的图像是否是有效的 png,然后传入代码。我认为它只是扩展误导了你。您可以使用this page 来测试仅供参考。
-
@BagusTesa 感谢您抽出时间提供帮助。你是说我需要检查 MIME 类型以便将所有图像更改为 png?
-
好吧,不,首先要做的是检查输出是否确实是
png,并强制文件名的扩展名为png,而不是使用getClientOriginalExtension()。 -
@BagusTesa 好的。我上传的图片是.jpg。使用您提供的网站进行检查时,它会返回:
File Type: JPEG image data, JFIF standard 1.01, comment: "CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), quality = 90" MIME Type: image/jpeg Suggested file extension(s): jpeg jpg jpe我还尝试删除 png 格式的质量,因为我读到质量不会影响 png 格式。还尝试将png转换为jpg。还是不行。 -
等等,你在那个页面上测试过的那个,上传的文件..?传入
->encode('png')时不是结果...?位于public_path('/images/users/listing-images/' . $filename)..
标签: php laravel intervention