【问题标题】:Codeigniter picture resizing not fully workingCodeigniter 图片调整大小未完全正常工作
【发布时间】:2017-10-04 11:21:24
【问题描述】:

我正在 CodeIgniter 上创建一个网站,以便用户可以将产品添加到我的网站。我做了一个调整大小的功能,所以图片也会创建一个缩略图。 现在,只有当图片大于宽度:168 像素和高度:112 像素时,此缩略图才会调整大小。如果图片小于该值,则图片不会调整大小。我希望我上传的所有图片都有一个 168 像素宽和 112 像素高的缩略图。

缩略图代码:

 $dataThumb = $this->upload->data();
        $configThumb['image_library'] = 'gd2';
        $configThumb['source_image'] = './upload/'.$dataThumb["raw_name"].$dataThumb['file_ext'];
        $configThumb['new_image'] = './upload/'.'thumb_'.$dataThumb["raw_name"].$dataThumb['file_ext'];
        $configThumb['create_thumb'] = TRUE;
        $configThumb['maintain_ratio'] = TRUE;
        $configThumb['width'] = 168;
        $configThumb['height'] = 112;

我的完整上传产品代码:

public function upload() {
        $this->load->library('upload');
        $this->load->library('image_lib');

        $config['upload_path'] = './upload/';
        $config['allowed_types'] = 'gif|jpg|png|bmp|jpeg';
        $config['max_size']    = '0';
        $config['max_width']  = '0';
        $config['max_height']  = '0';
        $config['encrypt_name']= true;
        $this->upload->initialize($config);


        if(!$this->upload->do_upload('userfile')){
            $error = array('error'=>$this->upload->display_errors());
            $this->load->view('product_form', $error);
        }else{
           //Main image
            $data = $this->upload->data();
            $config['image_library'] = 'gd2';
            $config['source_image'] = './upload/'.$data["raw_name"].$data['file_ext'];
            $config['new_image'] = './upload/'.'new_'.$data["raw_name"].$data['file_ext'];
            $config['create_thumb'] = FALSE;
            $config['maintain_ratio'] = FALSE;
            $config['width'] = 547;
            $config['height'] = 430;

            //Thumb image
            $dataThumb = $this->upload->data();
            $configThumb['image_library'] = 'gd2';
            $configThumb['source_image'] = './upload/'.$dataThumb["raw_name"].$dataThumb['file_ext'];
            $configThumb['new_image'] = './upload/'.'thumb_'.$dataThumb["raw_name"].$dataThumb['file_ext'];
            $configThumb['create_thumb'] = TRUE;
            $configThumb['maintain_ratio'] = TRUE;
            $configThumb['width'] = 168;
            $configThumb['height'] = 112;

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

            $this->image_lib->initialize($configThumb);
            $this->image_lib->resize();

            $this-> db-> insert('products', array(
                'user_id' => $_SESSION['user_id'],
                'product_foto' => 'new_'.$data["raw_name"].$data['file_ext'],
                'product_foto_thumb' => 'thumb_'.$dataThumb["raw_name"].$dataThumb['file_ext'],
                'product_naam' => $this->input->post('product_naam'),
                'product_beschrijving' => $this->input->post('product_beschrijving'),
                'ophaal_plaats' => $this->input->post('ophaal_plaats'),
                'category_id' => !empty($this->input->post('category_id')) ? $this->input->post('category_id') : 0,
                'date_created' => date('Y-m-d'),
                'date_updated' => date('Y-m-d')
                ));
            $data['img'] = base_url().
            '/upload/new_'.$data["raw_name"].$data['file_ext'];
            $dataThumb['img'] = base_url().
            '/upload/thumb_'.$dataThumb["raw_name"].$dataThumb['file_ext'];

            header('location:https://kadokado-ferran10.c9users.io/Product/');

        }
    }

【问题讨论】:

  • 什么意思?
  • 问题是我上传的较小的图片没有调整到 168 宽和 112 高
  • 您是否设置了调试,以便您可以看到它通过system/libraries/Image_lib.php 并查看最终的 $width 和 $height 设置为多少? (或者在兴趣点插入一堆log_message 命令。)
  • 这也是来自the documentationFor practical purposes there is no difference between creating a copy and creating a thumbnail except a thumb will have the thumbnail marker as part of the name (i.e. mypic_thumb.jpg). 也许可以扔掉拇指选项并自己重命名。

标签: php codeigniter codeigniter-3


【解决方案1】:
$config['maintain_ratio'] = TRUE;

上面的代码指定在调整大小时是否保持原来的纵横比。如果它设置为 true,它将改变你的图像分辨率。

$config['maintain_ratio'] = FALSE; //DO this

这将使您的分辨率保持不变。 我对此进行了测试,并且有效。 下面是结果: 原始图像为 512 X 512(大于您的尺寸)和 100 X 100(小于您的尺寸)

【讨论】:

  • 我在缩略图上做了,看看我的代码
  • 那么你的问题究竟是什么,你能详细说明一下
  • 正如你在我的缩略图代码中看到的,我设置了这个图片大小:$configThumb['width'] = 168; $configThumb['height'] = 112 。好的,所以我希望所有图片都调整为该图片大小,即使图片小于该大小。因此,现在只有当图片大于该尺寸时,它才会调整大小,但如果它小于该尺寸,则不会。你明白我的意思吗?
  • 在您发表评论后,我刚刚更改了我的答案,请参考,这将 100% 适合您。也可以在这里阅读手册>> codeigniter.com/user_guide/libraries/image_lib.html
  • 很抱歉,我的声望不到 15,所以我无法投票
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 2011-09-30
  • 2015-09-28
  • 2012-05-16
  • 1970-01-01
  • 2011-08-05
  • 2014-04-03
  • 2011-11-26
相关资源
最近更新 更多