Codeigniter 旋转大图像

Posted

技术标签:

【中文标题】Codeigniter 旋转大图像【英文标题】:Codeigniter rotate large images 【发布时间】:2012-09-16 08:04:08 【问题描述】:

我在旋转大图像时遇到问题...大于 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';
    

【问题讨论】:

什么问题?发布错误消息 【参考方案1】:

这可能是由于 php 内核中的 memory_limit 设置较低(您可以使用 phpinfo() 进行验证)以及 GD2 library 的内存消耗。 你可以参考这两个问题来解决这个问题:

PHP GD Allowed memory size exhausted A fail-safe way to prevent GD image library from running out of memory? (PHP)

你也可以试试ImageMagic library:

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

确保之前是installed。

【讨论】:

【参考方案2】:

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

【讨论】:

太棒了。 You can accept your own answer 因为您的解决方案解决了问题。

以上是关于Codeigniter 旋转大图像的主要内容,如果未能解决你的问题,请参考以下文章

在python中旋转大图像(85000x85000x3)

PHPStorm 和 CodeIgniter 路由问题

CI框架获取post和get参数 CodeIgniter

[CI] 使用CodeIgniter框架搭建RESTful API服务

是“root web server”和localhost一样吗?安装CodeIgniter

PHP mcrypt_create_iv 返回问号和不正确的长度 - CodeIgniter