2015-12-24 3 views
1

Я работаю над модулем редактора изображений, используя плагин guillotine.Повернуть, Обрезать изображение с помощью плагина гильотины и Laravel 5 Вмешательство

Я получаю параметры от 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

Я ценю вашу помощь! :)

ответ

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'); 
+0

Теперь это даже не кадрирование. – SomethingElse

+0

Вы получаете какие-либо ошибки? что нибудь? –

+0

Это было правильное решение. У меня было больше ошибок в моем javascript, поэтому я подумал, что это неправильный ответ. Спасибо! :) – SomethingElse

Смежные вопросы