1

我有一个 CI 图像上传表单,我想确保我上传的图像适合给定的矩形。如果它们太大 - 我想缩小它们的尺寸。如果它们适合该矩形 - 我不需要调整大小。

我知道 CI 支持最大高度和最大宽度(作为上传图像大小的限制),并且它支持调整大小,但我找不到如何将图像调整为设置的最大高度和最大-宽度(同时保持比例)。

4

4 回答 4

4

好吧,正如 CI 所预期的那样,这很容易(-:

使用时$this->image_lib->resize(),您设置所需的宽度和高度。如果您还将maintain_ratio 设置为true,则新图像的大小将调整为最接近您设置的宽度和高度的值,同时保留原始纵横比。

所以这是我上传图片后使用的代码:

$file_data = $this->upload->data();

$max_height = 115;
$max_width = 225;
if ($file_data['image_width']>$max_width || $file_data['image_height']>$max_height)
{
    $configResize = array(
                        'source_image' => $file_data['full_path'],
                        'width' => $max_width,
                        'height' => $max_height,
                        'maintain_ratio' => TRUE
                );

      $this->load->library('image_lib',$configResize);
      $this->image_lib->resize())  
 }
于 2013-04-30T07:40:43.783 回答
2

您需要计算您希望调整大小的图像的高度和宽度。例如:

  1. 假设您的输入图像为 1200x1000,并且您希望调整后的图像为 300x200。
  2. 求尺寸比 1200/1000=1.2 和 300/200=1.5。
  3. 如果原始比例大于您想要匹配宽度的目标调整大小比例,否则您想要计算高度。在这种情况下,我们要匹配高度。
  4. 找到比例因子以将图像更改为目标大小。比例因子为 200/1000=0.2。
  5. 使用比例因子找到按 0.2(1200*0.2 和 1000*0.2)= 240x200 缩放的新尺寸 1200x1000。
  6. 将图像大小调整为 240x200,因为它最适合 300x200 框。

取自 Silviu G 提供的网站http://ellislab.com/codeigniter/user-guide/libraries/image_lib.html

    $this->load->library('image_lib');
    $config['image_library'] = 'gd2';
    $config['source_image'] = 'originalImage.jpg';
    $config['create_thumb'] = TRUE;
    $config['width'] = 240;
    $config['height'] = 200;
    $this->load->library('image_lib', $config); 
    $this->image_lib->resize();
于 2013-04-29T14:11:09.950 回答
1

处理这个问题的更好方法可能是通过 CSS(结合 CI 图像处理库来调整大小):

    .media img{
        max-width:100px;
        max-height:100px;
    }
于 2013-04-29T12:36:00.413 回答
0

使用CI的图像处理类

于 2013-04-29T12:17:07.860 回答