使用 Guillotine 插件和 Laravel 5 干预旋转、裁剪图像
Rotate, Crop image using Guillotine plugin and Laravel 5 Intervention
我使用 guillotine 插件开发图像编辑器模块。
我从 ajax 获取参数。
{angle: 0,h: 600,scale: 6.7811,w: 800,x: 0,y: 485}
在laravel我有这个代码
$img = \Input::get('img');
$data = \Input::get('data');
$image = \Image::make($img)->rotate((int)$data['angle']);
// crop image
$image->crop((int)$data['w'], (int)$data['h'], (int)$data['x'], (int)$data['y']);
$image->save('uploads/tmp/img.png');
代码有效,但结果与用户选择的区域不同。
我想我也需要使用 'scale' 属性,但我不知道如何使用。
例如:用户选择区域
结果
感谢您的帮助! :)
你需要使用比例因子
然后使用 widen() 函数将其乘以图像宽度,它:
Resizes the current image to new width, constraining aspect ratio
所以高度也会得到缩放
$img = \Input::get('img');
$data = \Input::get('data');
list($type, $img) = explode(';', $img);
list(, $img) = explode(',', $img);
$img = base64_decode($img);
// save image
$img = file_put_contents('uploads/tmp/img.png', $img);
$image = \Image::make('uploads/tmp/img.png')->rotate((float)$data['angle']);
//we get the image width then multiply it by the scale factor, it will also scale the height automatically
$image->widen((int)$image->width()*$data['scale']);
// crop image
$image->crop((int)$data['w'], (int)$data['h'], (int)$data['x'], (int)$data['y']);
$image->save('uploads/tmp/img.png');
我使用 guillotine 插件开发图像编辑器模块。
我从 ajax 获取参数。
{angle: 0,h: 600,scale: 6.7811,w: 800,x: 0,y: 485}
在laravel我有这个代码
$img = \Input::get('img');
$data = \Input::get('data');
$image = \Image::make($img)->rotate((int)$data['angle']);
// crop image
$image->crop((int)$data['w'], (int)$data['h'], (int)$data['x'], (int)$data['y']);
$image->save('uploads/tmp/img.png');
代码有效,但结果与用户选择的区域不同。 我想我也需要使用 'scale' 属性,但我不知道如何使用。
例如:用户选择区域
结果
感谢您的帮助! :)
你需要使用比例因子 然后使用 widen() 函数将其乘以图像宽度,它:
Resizes the current image to new width, constraining aspect ratio
所以高度也会得到缩放
$img = \Input::get('img');
$data = \Input::get('data');
list($type, $img) = explode(';', $img);
list(, $img) = explode(',', $img);
$img = base64_decode($img);
// save image
$img = file_put_contents('uploads/tmp/img.png', $img);
$image = \Image::make('uploads/tmp/img.png')->rotate((float)$data['angle']);
//we get the image width then multiply it by the scale factor, it will also scale the height automatically
$image->widen((int)$image->width()*$data['scale']);
// crop image
$image->crop((int)$data['w'], (int)$data['h'], (int)$data['x'], (int)$data['y']);
$image->save('uploads/tmp/img.png');