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

我找到了问题所在。谢谢斯特鲁纳。我的托管服务提供商已将 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

这可能是由于memory_limitPHP 核心中的低设置(您可以使用 验证)和GD2 库phpinfo()的内存消耗。 你可以参考这两个问题来解决这个问题:

您也可以尝试使用ImageMagic 库

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

确保它之前已安装

于 2012-09-17T17:57:57.993 回答