如何在AWS Laravel中存储之前调整图像大小?

时间:2017-07-29 18:36:11

标签: laravel amazon-s3

在使用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');
}

3 个答案:

答案 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