1

私はいくつかの厄介なコードを持っています.SimpleImageを使用していても、CodeIgniterイメージクラスを使用できることは知っていますが、設定は少し大きいです.誰かが少しエレガントでより良い解決策を投稿できますか.これは今のところ私のコードです.SimpleImageを取り除きたいです. 、およびイメージクラスはコントローラーで初期化されます。ここに私が持っているものがあります:

// Main config
$config['image_library'] = 'gd2';
$config['maintain_ratio'] = TRUE;
$config['height'] = '1';
$config['master_dim'] = 'width';
$config['overwrite'] = TRUE;

// Resize image with SimpleImage
$novaslika="img/proizvodi/".$last.".jpg";
$image = new SimpleImage();
$image->load($_FILES['slika']['tmp_name']);
$image->resizeToWidth(800);
$image->save($novaslika);

// Create PNG 
$config['source_image'] = $_FILES['maska']['tmp_name'];
$config['width']     = 800;
$config['new_image']    = "./img/proizvodi/".$last."_maska.png";
$this->image_lib->initialize($config);
$this->image_lib->resize(); 

// Create thumb
$config['source_image'] = './img/proizvodi/'.$last.'.jpg';
$config['create_thumb'] = TRUE;
$config['new_image']    = './img/proizvodi/thumbs/'.$last.'_thumb.jpg';
$this->image_lib->initialize($config);
$this->image_lib->resize();
4

1 に答える 1

0

次のようなことができます。

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

    $a = array(
        'source_image' => 'images/1.jpg',
        'width' => 100,
        'height' => 100,
        'new_image' => 'images/2.jpg',
        'create_thumb' => TRUE,
        'overwrite' => FALSE
    );


    $image = $this->_image_manipulation($a);

    if($image === TRUE)
    {
        echo "IMAGE OK";
    }
    else
    {
        echo $image;
    }

}

private function _image_manipulation($configs = '')
{
    if($configs)
    {
        $config['image_library'] = 'gd2';   //static
        $config['maintain_ratio'] = TRUE;   //static
        $config['master_dim'] = 'width';    //static

        $config['source_image'] = $configs['source_image'];//required

        $config['height']       = (isset($configs['height']))?$configs['height']:NULL;          
        $config['width']        = (isset($configs['width']))?$configs['width']:NULL;

        $config['overwrite']    = (isset($configs['overwrite']))?$configs['overwrite']:NULL;

        $config['new_image']    = (isset($configs['new_image']))?$configs['new_image']:NULL;
        $config['create_thumb'] = (isset($configs['create_thumb']))?$configs['create_thumb']:NULL;

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

        if ( ! $this->image_lib->resize())
        {
            return $this->image_lib->display_errors();
        }
        else
        {
            return TRUE;
        }
    }
}

ただし、png のUNLESSに変換するには SimpleImage ライブラリが必要です。確認できません。SimpleImage は ImageMagick を使用しています。そうであれば、それはシステムにインストールされており、変更できることを意味します

$config['image_library'] = 'gd2';

$config['image_library'] = 'ImageMagick';

CodeIgniter は画像変換も処理します。ファイルの名前を変更するだけです。

$a = array(
    'source_image' => 'images/1.jpg',
    'new_image' => 'images/1.png',
);
于 2013-10-07T19:41:51.940 に答える