0

画像をアップロードしてサイズを変更し、小さいコピーを作成しようとしています。ただし、2 回目のサイズ変更は行われません。しかし、それは「TRUE」を返します。

私はそれについてさらに質問を見つけましたが、彼らはそのトリックをしませんでした.

  • $this->image_lib->clear();すべてのサイズ変更の前に追加
  • サイズを変更するたびにライブラリをロードしない
  • ディレクトリを書き込み可能にする (777)

これは私のコードの問題ではないと思います。

何か不足している場合は、お知らせください。

private function upload_image($id)
{
    $config_1['upload_path'] = './public/img/news/';
    $config_1['allowed_types'] = 'jpg|png';
    $config_1['file_name'] = 'news_item_'.$id.'.jpg';
    $config_1['overwrite'] = TRUE;
    $config_1['max_size']   = '900';
    $config_1['max_width']  = '5000';
    $config_1['max_height']  = '5000';

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

    if ( ! $this->upload->do_upload('image'))
    {
        $image_data     =   $this->upload->data();
        $this->load->library('image_lib');

        $config['image_library'] = 'gd2';
        $config['source_image'] = $image_data['full_path'];
        $config['maintain_ratio'] = TRUE;
        $config['quality']   = 75;
        if($image_data['image_width'] > 2000){
            $config['width']     = 2000;
            $config['height']    = 1500;
        }
        $this->image_lib->initialize($config); 
        if ( ! $this->image_lib->resize()){echo $this->image_lib->display_errors();}
        $this->image_lib->clear();

        //thumb
        $config['image_library'] = 'gd2';
        $config['source_image'] = $image_data['full_path'];
        $config['new_image']    = './public/img/news/thumb/news_item_'.$id.'.jpg';
        $config['maintain_ratio'] = TRUE;
        $config['quality']   = 75;
        $config['width']     = 650;
        $config['height']    = 500;

        $this->image_lib->initialize($config);
        if ( ! $this->image_lib->resize()){echo $this->image_lib->display_errors();}
        $this->image_lib->clear();
    }
}

解決策 それだけです。 _ atがあってif ( ! $this->upload->do_upload('image'))はなりません。それは今動作しますありがとう!

4

1 に答える 1

1

私はあなたがこのようにすべきだと思います

if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
}
else
{
$file_name=$this->upload->file_name;
$this->create_thumb($file_name);
}

次に、コントローラーでこの関数を create_thum にします

function create_thumb($file_name)
     {
        $this->load->library('image_lib');
        $config['image_library'] = 'gd2';
        $config['source_image'] = './uploads/restaurants/restaurants/'.$file_name;  
        $config['create_thumb'] = FALSE;
        $config['maintain_ratio'] = FALSE;
        $config['width'] = 78;
        $config['height'] = 78;
        $config['new_image'] = './uploads/restaurants/restaurants/thumbs/'.$file_name;
        $this->image_lib->initialize($config);
        $this->image_lib->resize();
        if(!$this->image_lib->resize())
        {
            echo $this->image_lib->display_errors();
        }
        $config['image_library'] = 'gd2';
        $config['source_image'] = './uploads/restaurants/restaurants/'.$file_name;  
        $config['create_thumb'] = FALSE;
        $config['maintain_ratio'] = FALSE;
        $config['width'] = 304;
        $config['height'] = 251;
        $config['new_image'] = './uploads/restaurants/restaurants/thumbs_big/'.$file_name;
        $this->image_lib->initialize($config);
        $this->image_lib->resize();
        if(!$this->image_lib->resize())
        {
            echo $this->image_lib->display_errors();
        }

        $config['image_library'] = 'gd2';
        $config['source_image'] = './uploads/restaurants/restaurants/'.$file_name;  
        $config['create_thumb'] = FALSE;
        $config['maintain_ratio'] = FALSE;
        $config['width'] = 37;
        $config['height'] = 37;
        $config['new_image'] = './uploads/restaurants/restaurants/thumbs_small/'.$file_name;
        $this->image_lib->initialize($config);
        $this->image_lib->resize();
        if(!$this->image_lib->resize())
        {
            echo $this->image_lib->display_errors();
        }

        $config['image_library'] = 'gd2';
        $config['source_image'] = './uploads/restaurants/restaurants/'.$file_name;  
        $config['create_thumb'] = FALSE;
        $config['maintain_ratio'] = FALSE;
        $config['width'] = 108;
        $config['height'] = 108;
        $config['new_image'] = './uploads/restaurants/restaurants/thumbs_108/'.$file_name;
        $this->image_lib->initialize($config);
        $this->image_lib->resize();
        if(!$this->image_lib->resize())
        {
            echo $this->image_lib->display_errors();
        }
     }

任意の数の親指

于 2013-05-22T11:50:07.650 に答える