我使用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'属性,但我不知道怎么做。
例如:用户选择的区域
结果
感谢您的帮助! :)
答案 0 :(得分:0)
您需要使用比例因子 然后使用widen()函数将其乘以图像宽度,它:
将当前图像调整为新宽度,约束纵横比
所以高度也会得到比例
$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');