【发布时间】:2012-12-04 22:58:24
【问题描述】:
我正在使用 Codeigniter 中的图像操作库,我需要将图像的大小调整为最大宽度为 278 像素,同时保持比例。我还需要确保图片不超过 400 像素。
我正在尝试通过使用$this->image_lib->resize() 来执行此操作,然后使用$this->image_lib->crop() 再次运行它,但是我在调整大小时遇到了干扰裁剪的问题。
这是两个模型:
public function create_thumb($path) {
$data = $this->upload->data();
if ($data['image_width'] >= 278):
$config['image_library'] = 'gd2';
$config['source_image'] = $path;
$config['create_thumb'] = FALSE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 278;
$config['height'] = 400;
$config['quality'] = '90%';
$config['master_dim'] = 'width';
$this->load->library('image_lib', $config);
if ($this->image_lib->resize()):
$this->image_lib->clear();
endif;
endif;
$this->crop_image($path);
return false;
}
// Make max image size 278x400
public function crop_image($path) {
list($width, $height) = getimagesize($path);
$config['image_library'] = 'gd2';
$config['source_image'] = $path;
$config['x_axis'] = '0';
$config['y_axis'] = '0';
$config['maintain_ratio'] = FALSE;
$config['width'] = $width;
$config['height'] = 400;
$config['quality'] = '100%';
$this->load->library('image_lib', $config);
if ($this->image_lib->crop())
{
return true;
}
return false;
}
如果我直接从控制器调用crop_image(),它会按预期进行裁剪。但是,当从 create_thumb() 调用它时,我收到错误 Your server does not support the GD function required to process this type of image. 由于我之前能够裁剪图像并且根据 phpinfo() 安装了 GD,我对为什么会收到此错误感到困惑。
我认为问题与两次加载 image_lib 有关,但我认为$this->image_lib->clear(); 会解决该问题?
我做错了什么?有没有更好的方法可以将图像的大小调整为最大 278 像素宽度和最大 400 像素高度?
【问题讨论】:
-
你试过倒车吗?裁剪然后调整大小,还是单独运行任一函数?
-
@Jeemusu Ya,他们都分开工作。一旦我一起尝试它们,它们就会失败并导致我在问题中发布的错误。
标签: php codeigniter