【问题标题】:imagecopyresampled issues...dimensions not quite rightimagecopyresampled 问题...尺寸不太正确
【发布时间】:2012-10-15 13:53:54
【问题描述】:

我在裁剪图像时遇到问题,我想也许有人可以提供帮助。基本上,我使用 jCrop 将图像裁剪为指定的 x、y、宽度、高度,并在后端使用以下内容来处理图像:

<?php
    $image = imagecreatefromjpeg(DOC_ROOT . '/' . $db_image->source);   
    list($image_width, $image_height) = getimagesize(DOC_ROOT . '/' . $db_image->source);
    $cf = $data->cropping_factor;
    $new_image = imagecreatetruecolor($cf * $data->crop_data['w'], $cf * $data->crop_data['h']);
    imagecopyresampled(
        $new_image, 
        $image, 
        0, //Destination x coordinate
        0, //Destination x coordinate
        intval($cf * $data->crop_data['x']), //Source X coordinate
        intval($cf * $data->crop_data['y']), //Source Y coordinate
        intval($cf * $data->crop_data['w']), //Destination W
        intval($cf * $data->crop_data['h']), //Destination H
        $image_width, //Original W
        $image_height //Original H
    );
    imagejpeg($new_image, DOC_ROOT . '/' . $db_image->source, 100);
?>

基本上,这段代码给我留下了:

Array
(
    [0] => Resource id #33 //New Image
    [1] => Resource id #31 //Source Image
    [2] => 0 //Destination X
    [3] => 0 //Destination Y
    [4] => 114 //Source X
    [5] => 407 //Source Y
    [6] => 786 //New Width
    [7] => 293 //New Height
    [8] => 900 //Original Width
    [9] => 700 //Original Height
)

可以在此处找到原始图像:http://cl.ly/image/3Y0l1a2h3U2S。调整大小的图像可以在这里找到:http://cl.ly/image/0Q3J2c2q0N1j

感谢您的帮助。

【问题讨论】:

    标签: php gd jcrop


    【解决方案1】:

    经过进一步检查,图像似乎失真(条形不同程度地倾斜)。有了这些信息,我认为天平必须关闭。因此,我将代码更改为以下内容:

    <?php
        imagecopyresampled(
            $new_image, 
           $image, 
           0, //Destination x coordinate
           0, //Destination x coordinate
           intval($cf * $data->crop_data['x']), //Source X coordinate
           intval($cf * $data->crop_data['y']), //Source Y coordinate
           $image_width, //Original W
           $image_height //Original H
           $image_width, //Original W
           $image_height //Original H
        );
    ?>
    

    这通过不缩放新目标图像的坐标解决了该问题。

    【讨论】:

    • 如果源和目标宽度/高度相同,为什么要使用imagecopyresampled?你可以使用imagecopy
    猜你喜欢
    • 2015-04-05
    • 2011-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多