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