裁剪图像无法正常工作,存储了错误的部分

Posted

技术标签:

【中文标题】裁剪图像无法正常工作,存储了错误的部分【英文标题】:Cropping images does not work properly, wrong sections are being stored 【发布时间】:2013-01-21 14:35:52 【问题描述】:

所以这是包含矩形的原始图片,我想从

这就是我在裁剪后得到的

因此可以看出,新图像的尺寸正确,但裁剪的部分错误。 这是JS:

$(document).ready(function()
    
        $('#cropimage').Jcrop(
        
            aspectRatio: 3 / 4,
            maxSize: [150,200],
            onSelect: updateCoords
        );
    );
    function updateCoords(c)
    
        $('#x').val(c.x);
        $('#y').val(c.y);
        $('#w').val(c.w);
        $('#h').val(c.h);
    ;

这是 php 代码

function crop($_POST)
   
    $clipX      = (int)$_POST['x'];
    $clipY      = (int)$_POST['y'];
    $filename   = (string)$_POST['image'];
    $resizedHeight  = (int)$_POST['h'];
    $resizedWidth   = (int)$_POST['w'];

    // Original image's details
    $original   = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'images/user_pictures/' . DIRECTORY_SEPARATOR . $filename;

    $dimensions     = getimagesize($original);
    $old_width  = $dimensions[0];
    $old_height     = $dimensions[1];

    // image = original_image
    $old_image  = call_user_func('imagecreatefrom' . 'jpeg', $original);


    // Crop image
    if (function_exists('imagecreatetruecolor') && ($new_image = imagecreatetruecolor($resizedWidth, $resizedHeight)))
        imagecopyresampled($new_image, $old_image, 0, 0, $clipX, $clipY, $resizedWidth, $resizedHeight, $old_width, $old_height);

    imagejpeg($new_image,'images/user_pictures/'.$this->getUserID().'_picture.jpg');

我以前从未使用过这些 php 函数,但我已经阅读了一些教程,但我没有看到任何错误。 但必须至少有 1 ......我做错了什么? 无论出于何种原因,原始图像似乎都已调整大小。

【问题讨论】:

【参考方案1】:

如果您想根据 (x,y,w,h) (10,15,30,35) 进行裁剪,那么您的函数将是:

imagecopyresampled ( $dst_image , $src_image , 0, 0 , 10 , 15 , 30-10 , 35-15 , 30-10 , 35-15 )

由于您要将 20x20 从原始图像复制到新图像中,因此这些尺寸是您的新尺寸和 dst_w、dst_h 以及您的 src_w、src_h。

$old_width 和 $old_height 现在是原始图像的完整宽度,而它们应该是裁剪部分的宽度和高度。

$old_width = $resizedWidth;
$old_height = $resizedHeight;

【讨论】:

这真是太棒了.. 非常感谢,就像一个魅力 =)

以上是关于裁剪图像无法正常工作,存储了错误的部分的主要内容,如果未能解决你的问题,请参考以下文章

图像的自定义裁剪无法正常工作

从图库中裁剪的 android-image 无法正常工作

在android中以不规则形状裁剪图像无法正常工作

当图像重新缩放以适合画布时,织物 js 上的裁剪功能无法正常工作

画廊中的 Phonegap 图像选择器无法正常工作

尝试裁剪资源文件夹中的图像时发生无法加载照片错误