PHP裁剪图像 - 错误区域

Posted

技术标签:

【中文标题】PHP裁剪图像 - 错误区域【英文标题】:PHP crop image - wrong area 【发布时间】:2013-07-08 06:47:13 【问题描述】:

在客户端,我有一个 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 是错误的(尽管它们不是)。我得到了正确的宽度/高度,但部分错误。

上面的代码有什么问题?

【问题讨论】:

【参考方案1】:

解决了。问题是客户端没有考虑原始图像大小,它是用 CSS 缩放的

【讨论】:

以上是关于PHP裁剪图像 - 错误区域的主要内容,如果未能解决你的问题,请参考以下文章

PHP Imagick 中的裁剪错误?

php缩放图像裁剪

php图片裁剪

在 Qt 中使用 QRubberBand 裁剪图像

使用 php 从图像中裁剪多边形

PHP实现的自定义图像居中裁剪函数示例