在客户端,我有一个 jQuery 脚本,我用它来选择图片上的一个正方形区域。我得到了 x1、y1 和宽度、高度参数。它们被正确发送到服务器。我想将图像裁剪为此选择,然后转换为 PNG(尽管我尝试了 imagejpg、imagepng 函数)
代码是(我使用 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);
当原始图像的高度>宽度时,它可以完美地工作。当我尝试裁剪宽图像(宽度 > 高度)时,我得到了错误的区域,看起来 x1,y1 是错误的(尽管它们不是)。我得到了正确的宽度/高度,但错误的部分。
上面的代码有什么问题?