1

大きな画像を回転させるコードイグナイターに問題があります... 1.2MBよりも大きいです。小さい画像の場合は問題ありません。

コードは次のとおりです。

public function rotate(){
    $path = $this->input->post('path');
    $file = $this->input->post('file');
    $config['image_library'] = 'gd2';
    $config['source_image'] = $path;
    $config['rotation_angle'] = '90';
    $config['new_image'] = './uploads/_rot'.$file;
    $this->load->library('image_lib');

    $this->image_lib->initialize($config); 
    //$this->image_lib->rotate();
    if(!$this->image_lib->rotate()){
        echo $this->image_lib->display_errors();
    } else {
        echo 'OK';
    }
}
4

2 に答える 2

1

私は問題を見つけました。ありがとうStruna。私のホスティングプロバイダーはphpメモリ制限を32mbに設定しており、gd2ライブラリはメモリを必要としており、それを増やすつもりはありません。解決策は移行または別のライブラリです:imagemagick :)コードは次のとおりで、うまく機能します

public function rotate(){
    $path = $this->input->post('path');
    $file = $this->input->post('file');
    //echo "aaa";
    $config['image_library'] = 'imagemagick';
    $config['library_path'] = '/usr/bin';       
    $config['source_image'] = $path;
    $config['rotation_angle'] = '90';
    $config['quality'] = "90%";     
    $config['new_image'] = './uploads/_rot'.$file;
    $this->load->library('image_lib');
    $this->load->helper('file');

    $this->image_lib->initialize($config); 
    //$this->image_lib->rotate();
    if(!$this->image_lib->rotate()){
        echo $this->image_lib->display_errors();
    } else {
        echo 'OK';
        //delete_files($path);
    }
}
于 2012-09-18T20:26:35.600 に答える
1

これは、PHP コアの設定が低いことmemory_limit(で確認できます) と、 GD2 ライブラリphpinfo()によるメモリ消費が原因である可能性があります。 それを修正するには、次の 2 つの質問を参照してください。

ImageMagic ライブラリで試してみることもできます:

$config['image_library'] = 'imagemagick';
$config['library_path'] = '/usr/bin/convert';

事前にインストールされていることを確認してください。

于 2012-09-17T17:57:57.993 に答える