121*_*21c 0 php image laravel-5 intervention php-7
我在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']);
Run Code Online (Sandbox Code Playgroud)
调试时($path设置了线路上的断点),我可以看到它$realPath包含一个类似的值/private/var/folders/23/jl2dytp168g9g9s5j51w2m780000gn/T/php9047Fh- 去那里我可以看到我正在尝试的图像make()/ resize()。
该$resizedImage对象具有以下字段:
[encoded] =>
[mime] => image/jpeg
[dirname] => /private/var/folders/23/jl2dytp168g9g9s5j51w2m780000gn/T
[basename] => phpTNRdXe
[extension] =>
[filename] => phpTNRdXe
Run Code Online (Sandbox Code Playgroud)
我猜编码的属性应该包含类似 base 64 图像数据的内容?
检查 AWS S3 存储桶中的图像时,它总是作为 0 字节的图像上传。我在这里做错了什么?
干预被配置为使用 GD,如果它有任何不同
Laravel File 类是Symfony File 类的子类,后者又是子类\ SplFileInfo
文件对象可以直接传入Image::make. Image::make 获取realPathfor\SplFileInfo对象。
图片::提出退货的实例图片和$resizedImage->__toString()返回它的价值encoded领域。encoded以空字符串开头。
应该在访问其编码值之前对图像进行编码。
$resizedImage->encode();
Run Code Online (Sandbox Code Playgroud)
然后,
$path = Storage::disk('s3')->put($file_path, $resizedImage->__toString(), ['visibility' => 'public']);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
771 次 |
| 最近记录: |