1

我在图像编辑器模块上工作,使用断头台插件。

我从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' 属性,但我不知道如何。

例如:用户选择的区域

在此处输入图像描述

结果

在此处输入图像描述

我感谢您的帮助!:)

4

1 回答 1

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');
于 2015-12-24T21:28:42.900 回答