在使用Laravel将图像存储到我的AWS S3存储中之前,是否有人可以帮助我调整图像大小?我的问题是我的网站正在通过Heroku运行,更大的图像使网站/应用程序崩溃。我尝试过安装图像/干预,似乎没什么用。有没有人能快速解决这个问题,或者你可能指出我的方向正确吗?
这是我存储的代码:
if ($request->file('board_img')) {
$hashname = $request->file('board_img')->hashName();
Storage::disk('s3')->put('wod-pictures/', $request->file('board_img'), 'public');
$wod_img = "wod-pictures/" . $hashname;
} else {
$wod_img = $request->get('board_img');
}
答案 0 :(得分:1)
我认为您在使用heroku时遇到超时问题(30秒),我尝试使用以下代码进行上传,并且工作得非常好`
$image = Image::make($image);
$resize_image = $image->resize(640,427);
$s3->put('path ', (string) $resize_image, 'public');
另一种方法是上传图像并使用AWS lambda方法(Nodejs)调整大小
答案 1 :(得分:0)
安装Image Intervention,注册Image
外观并使用stream()
和toString()
方法,例如:
$image = Image::make($file)->fit($width, $height)->stream();
Storage::disk('s3')->put('image_file_name', $image->__toString());
答案 2 :(得分:0)
在本地系统或服务器中安装ffmpeg(https://www.ffmpeg.org/)。在Heroku上,进入您的应用程序设置,添加构建包(https://github.com/jonathanong/heroku-build-pack-ffmpeg-latest.git)。 然后您的代码运行此行。
exec('ffmpeg -i '.Your file.' -vf scale=320:-1 '.$Scalefilename);
$filePath = 'images/'.$Scalefilename;
$image_data = public_path().'your folder'.$Scalefilename;
Storage::disk('s3')->put($filePath,file_get_contents($image_data),'public');
如果要使用类缩放,请遵循以下代码。 https://github.com/pankajvashisht-ucreate/laraval_ffmpeg/blob/master/app/Services/Resize.php