我在codeigniter旋转大图像时遇到问题...大于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';
}
}
答案 0 :(得分:1)
这可能是由于PHP核心中的memory_limit
设置较低(您可以使用phpinfo()
验证)和GD2 library的内存消耗。
您可以参考这两个问题来解决这个问题:
您也可以尝试使用ImageMagic library:
$config['image_library'] = 'imagemagick';
$config['library_path'] = '/usr/bin/convert';
请确保之前installed。
答案 1 :(得分:1)
我找到了问题所在。谢谢Struna。 我的托管服务提供商将php内存限制设置为32mb,gd2 libs对于mem来说很饿,而且他们不会增加它, 解决方案是迁移或其他库: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);
}
}