1
votes

On the clientside I have a jQuery script which I use to select a square area on the picture. I got x1, y1 and width, height parameters. They are sent correctly to the server. I want to crop image to this selection and then convert to PNG (although I tried both imagejpg, imagepng functions)

The code is (I use laravel 4):

    $file     = Input::file('picture');
    $filename = md5(microtime()).'.png';

    $image    = imagecreatefromstring(file_get_contents($file->getRealPath()));
    $crop     = imagecreatetruecolor(Input::get('width'), Input::get('height'));

    imagecopy($crop, $image, 0, 0, (int)Input::get('x1'), (int)Input::get('y1'), Input::get('width'), Input::get('height'));
    imagepng($crop, public_path().'/uploads/pictures/'.$filename);

It works perfectly when height > width of original image. When I try to crop wide images (width > height) I got wrong area and it seems like x1,y1 are wrong (although they're not). I got right width/height, but wrong section.

What's wrong with the code above?

1

1 Answers

1
votes

Solved. The problem was that client side didn't take into account original image size, it was scaled with CSS