错误(?)codeigniter裁剪图像的高度和宽度已更改

Posted

技术标签:

【中文标题】错误(?)codeigniter裁剪图像的高度和宽度已更改【英文标题】:bug (?) codeigniter crop image height and width changed 【发布时间】:2018-07-13 04:46:10 【问题描述】:

我从 UI 发送了source_imagex_axisy_axisheightwidth 来处理图像(在这种情况下我裁剪图像),这是我的代码:

$this->load->library('image_lib');
$image = $this->input->post('source_image');
//array configuration for clock-wise and counter-clock-wise
$angle = array(
        0 => 0,
        90 => 270,
        180 => 180,
        270 => 90
    );

    $rotation = $this->input->post('rotation');
    $x = $this->input->post('x');
    $y = $this->input->post('y');
    $width = $this->input->post('width');
    $height = $this->input->post('height');

    $result = array();

    $config['image_library'] = 'gd2';
    $config['source_image'] = $image;
    $config['x_axis'] = $x;
    $config['y_axis'] = $y;
    $config['maintain_ratio'] = TRUE;
    $config['width'] = $width;
    $config['height'] = $height;

    $this->image_lib->initialize($config);

    if (!$this->image_lib->crop()) 
        $result = array(
        'result' => FALSE,
        'error' => $this->image_lib->display_errors()
        );
    

当我完成裁剪图像然后我再次检查它改变的分辨率时,例如:

width: 197px; height: 173px;

它应该是我完成裁剪时的分辨率,但是当我检查它时,分辨率变成了

width: 181px; height: 173px;

在其他情况下,有时宽度会改变,有时高度也会改变..

配置$config 或其他什么时我错了吗?谢谢

【问题讨论】:

【参考方案1】:

那么你不应该使用$config['maintain_ratio'] = TRUE;(设置为false)。

由于启用了 maintain_ratio 选项,图像将尽可能接近 在保留的同时尽可能达到目标宽度和高度 原始纵横比

文档:https://www.codeigniter.com/userguide3/libraries/image_lib.html#processing-an-image

请记住,更改比率或将其设置为 false 以使尺寸为硬值会导致某些图像歪斜或看起来很奇怪。 CI 没有办法真正处理这个问题,但还有其他上传库可以添加黑条左右,同时保持您指定的大小,例如:https://github.com/verot/class.upload.php

【讨论】:

@yosafat ksatria 你能提供你的 UI/html 端的裁剪代码吗,你从哪里给出了裁剪输入。?

以上是关于错误(?)codeigniter裁剪图像的高度和宽度已更改的主要内容,如果未能解决你的问题,请参考以下文章

使用CodeIgniter和Cropper进行图像裁剪

使用 codeigniter 进行图像裁剪,没有 GD 库 - 安装了 GD2

python对yuv图像裁剪

使用 codeigniter 进行图像裁剪

使用 jcrop 和 CodeIgniter 裁剪图像

在 CodeIgniter 中裁剪图像以输出 FPDF