在CodeIgniter中上传时如何调整图片大小 [英] How can I make picture resize function when uploading in CodeIgniter

查看:62
本文介绍了在CodeIgniter中上传时如何调整图片大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在CodeIgniter框架上创建了一个函数,以便用户可以将产品图片上传到产品页面。问题是我希望将图片调整为想要的宽度和高度。

I made a function on the CodeIgniter framework so users can upload pictures of products to a product page. The thing is I want pictures to be resized to the width and height I want it to be.

这是我在控制器中的上传功能:

This is my upload function in my controller:

public function upload(){

$this->load->library('upload');

if(!$this->upload->do_upload('userfile')){
    $error = array('error'=>$this->upload->display_errors());
    $this->load->view('product_form', $error);
}else{

    $config['image_library'] = 'gd2';
    $config['source_image'] = './upload/'.$file_data["file_name"];
    $config['create_thumb'] = TRUE;
    $config['maintain_ratio'] = TRUE;
    $config['width']         = 100;
    $config['height']       = 100;

    //load library
    $this->load->library('image_lib', $config);

    //resize image
    $this->image_lib->resize();


    $this->db->insert('products', array(
        'product_foto' => $file_data['file_name'],
        'product_naam'  => $this->input->post('product_naam'),
        'product_beschrijving' => $this->input->post('product_beschrijving'),
        'product_categorie'  => $this->input->post('product_categorie'),
        'ophaal_plaats'  => $this->input->post('ophaal_plaats'), 
        'date_created' => date('Y-m-d'),
        'date_updated' => date('Y-m-d')
        ));
    $data['img'] = base_url().'/upload/'.$file_data['file_name'];
    header('location:https://kadokado-ferran10.c9users.io/Product/');
}

我的查看表单:

<?php echo form_open_multipart('Product/upload'); ?>


        <table class="aanbieding-cadeau">

         <tr>
          <td><?php echo form_input(array('id'=>'product_naam', 'name'=>'product_naam', 'placeholder' => '1. Naam van het cadeau', 'size'=>25));?></td>
        </tr>

         <tr>
          <td><?php echo($selectField);?></td>
        </tr> 

         <tr>
          <td><?php echo form_input(array('id'=>'ophaal_plaats', 'name'=>'ophaal_plaats', 'placeholder' => '3.Kies een stad', 'size'=>25));?></td>
        </tr>

        <div class="checkbox">
        <label><input type="checkbox" value="">Gebruik adres van mijn account</label>
        </div>

        <tr>
        <td>
            <h4>Upload foto</h4>
        <input type="file" name="userfile" />
          </td>
        </tr>

    <tr>
    <td><?php echo form_textarea(array('type'=>'textarea','id'=>'product_beschrijving', 'name'=>'product_beschrijving', 'placeholder' => '5. Vertel iets over dit cadeau..', 'size'=>25));?></td>
    </tr>


<tr>
<td><input type="submit" class="btn btn-primary" name="submit" value="Cadeau aanbieden!" /></td>
</tr>
     </table>
    </form>

我希望用户上传的每张图片都是400宽度和400高度,但是我该怎么做?

I want every picture a user uploads to be 400 width and 400 height but how can I do that?

推荐答案

使用此方法:

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{

    $data = $this->upload->data();
    $config['image_library'] = 'gd2';
    $config['source_image'] = './upload/'.$data["raw_name"].$data['file_ext'];
    $config['new_image'] = './upload/'.$data["raw_name"].$data['file_ext'];
    $config['create_thumb'] = FALSE;
    $config['maintain_ratio'] = FALSE;
    $config['width']         = 400;
    $config['height']       = 400;

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

    $this->image_lib->resize();


    $this->db->insert('products', array(
        'product_foto' => $data["raw_name"].$data['file_ext'],
        'product_naam'  => $this->input->post('product_naam'),
        'product_beschrijving' => $this->input->post('product_beschrijving'),
        'product_categorie'  => $this->input->post('product_categorie'),
        'ophaal_plaats'  => $this->input->post('ophaal_plaats'), 
        'date_created' => date('Y-m-d'),
        'date_updated' => date('Y-m-d')
        ));
    $data['img'] = base_url().'/upload/'.$data["raw_name"].$data['file_ext'];
    header('location:https://kadokado-ferran10.c9users.io/Product/');
}

这篇关于在CodeIgniter中上传时如何调整图片大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆