我在Laravel中使用http://image.intervention.io/来调整图像的大小,然后再将它们存储在AWS S3存储桶中。这是适用的代码:
$extension = $image->extension();
$realPath = $image->getRealPath();
$resizedImage = Image::make($realPath) // ->resize(255, 255); // resize or not, make() seems to always return an empty Image
$file_path = "posts/$post->id/images/image-$post->id-num-$pictureCount.$extension/";
$path = Storage::disk('s3')->put($file_path, $resizedImage->__toString(), ['visibility' => 'public']);
[调试时(设置了$path
行的断点),这可以看到$realPath
拥有类似/private/var/folders/23/jl2dytp168g9g9s5j51w2m780000gn/T/php9047Fh
的值-然后去那里,我可以看到我正在尝试make()
/ [ C0]。
resize()
对象具有以下字段:
$resizedImage
我猜编码属性应该包含基本64位图像数据之类的东西?
[在AWS S3存储桶中检查图像时,总是将其作为0字节的图像上载。我在这里错了吗?
干预被配置为使用GD,如果有任何不同的话
[[encoded] =>
[mime] => image/jpeg
[dirname] => /private/var/folders/23/jl2dytp168g9g9s5j51w2m780000gn/T
[basename] => phpTNRdXe
[extension] =>
[filename] => phpTNRdXe
是Laravel File class的子类,而这又是Symfony File class]的子类>
文件对象可以直接在\ SplFileInfo
中传递。 Image::make
对象的Image::make
gets the realPath
。
Image :: make返回realPath
的实例,\SplFileInfo
返回其Image字段的值。 $resizedImage->__toString()
以encoded
开头。
访问图像的编码值之前,图像应为encoded
。
empty string然后,
encoded