1

Codeigniter で画像操作ライブラリを使用しており、比率を維持しながら最大幅 278 ピクセルになるように画像のサイズを変更する必要があります。また、画像が 400px を超えないようにする必要があります。

$this->image_lib->resize()を使用して再度実行することでこれを実行しようとしています$this->image_lib->crop()が、トリミングに干渉するサイズ変更に問題があります。

以下に 2 つのモデルを示します。

public function create_thumb($path) {

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

    if ($data['image_width'] >= 278):

        $config['image_library'] = 'gd2';
        $config['source_image'] = $path;
        $config['create_thumb'] = FALSE;
        $config['maintain_ratio'] = TRUE;
        $config['width'] = 278;
        $config['height'] = 400;
        $config['quality'] = '90%';
        $config['master_dim'] = 'width';

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

        if ($this->image_lib->resize()):

            $this->image_lib->clear();

        endif;

    endif;

    $this->crop_image($path);

    return false;
}

// Make max image size 278x400
public function crop_image($path) {

    list($width, $height) = getimagesize($path);

    $config['image_library'] = 'gd2';
    $config['source_image'] = $path;
    $config['x_axis'] = '0';
    $config['y_axis'] = '0';
    $config['maintain_ratio'] = FALSE;
    $config['width'] = $width;
    $config['height'] = 400;
    $config['quality'] = '100%';

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

    if ($this->image_lib->crop())
    {
        return true;
    }
    return false;
}

コントローラーから直接 crop_image() を呼び出すと、期待どおりにトリミングされます。ただし、create_thumb() から呼び出されると、エラーが発生しますYour server does not support the GD function required to process this type of image.。以前に画像をトリミングでき、GD は phpinfo() に従ってインストールされているため、なぜこのエラーが発生するのか混乱しています。

問題はimage_libを2回ロードすることに関連していると思いますが、それで$this->image_lib->clear();問題は解決すると思いましたか?

私は何を間違っていますか?画像のサイズを最大幅 278 ピクセル、高さ最大 400 ピクセルに変更するより良い方法はありますか?

4

1 に答える 1

1

これを試して :-

            //Resize Image
            $config = array();
            $config['image_library'] = 'gd2';
            $config['source_image'] = './assets/uploaded_files/gallery/original/'.$image_name;
            $config['new_image'] = './assets/uploaded_files/gallery/banner/'.$image_name;
            $config['create_thumb'] = FALSE;
            $config['maintain_ratio'] = TRUE;
            $config['master_dim']= 'width';
            $config['quality']  = '100';
            $config['width'] = 1260;
            $config['height']= 645;
            $this->image_lib->initialize($config);
            $this->image_lib->resize();
            //Crop image
            $config = array();
            $config['image_library'] = 'gd2';
            $config['source_image'] = './assets/uploaded_files/gallery/banner/'.$image_name;
            $config['new_image'] = './assets/uploaded_files/gallery/banner/'.$image_name;
            $config['create_thumb'] = FALSE;
            $config['maintain_ratio'] = FALSE;
            $config['quality']  = '100';
            $config['x_axis'] = 0;
            $config['y_axis'] = 0;
            $config['width'] = 1260;
            $config['height']= 645;
            $this->image_lib->initialize($config);
            $this->image_lib->crop();

必要に応じて幅と高さを調整します。

于 2012-12-05T11:32:49.523 に答える