旋转,使用断头台插件和Laravel 5干预裁剪图像

时间:2015-12-24 17:03:34

标签: php image-processing 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'属性,但我不知道怎么做。

例如:用户选择的区域

enter image description here

结果

enter image description here

感谢您的帮助! :)

1 个答案:

答案 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');