resize()无法使用Image操作类

时间:2010-07-11 19:15:10

标签: codeigniter image-manipulation php

我一直在阅读文档并尝试用上传图片来制作大拇指,但我似乎无法找到问题。

图像上传并正确保存但拇指不正确,失败且没有错误输出。 这是我正在使用的代码:

$data = $this->upload->data();

$config_image['image_library'] = 'gd';
$config_image['source_image'] = $data['full_path'];
$config_image['new_image'] = 'uploads/thumbs/';
$config_image['create_thumb'] = TRUE;
$config_image['maintain_ratio'] = TRUE;
$config_image['width'] = 750;
$this->load->library('image_lib', $config_image);

if ( !$this->image_lib->resize())
{
    $this->session->set_flashdata('message',  $this->image_lib->display_errors());
} 

另外,我想调整图像大小以适应max-width = 750,但保持比率。我正在做的事情是正确的吗? 谢谢!

5 个答案:

答案 0 :(得分:1)

可能两者都必须指定宽度和高度?只需尝试使用固定高度(并在第二步中进行宽高比感知缩放)。

为了保持比例,简单,首先计算图像的纵横比,然后计算目标高度:

$target_width = 750;
$image_aspect_ratio = $image_width / $image_height;
$target_height = $target_width / $image_aspect_ratio;

你可以从简单的数学推导出这个:r = w / h。所以,w = r * h(=目标宽度,如果你有一个固定的高度)和h = w / r(=目标高度,如果你有一个固定的宽度)。

答案 1 :(得分:1)

你一定要使用GD2。

CI的图像处理类有时候有点气质。如果您无法开展工作,请查看timthumb。它是一个小的1文件PHP脚本,可以动态调整图像大小并使用缓存系统。您只需通过图像标记的src属性传递所需的参数。非常简单,效果非常好,而且比CI的图像处理类更令人头疼。

答案 2 :(得分:1)

我知道这有点太晚了,但我最近遇到了同样的问题并通过初始化课程解决了这个问题。

CodeIgniter示例不起作用,您必须先加载该类:

$this->load->library('image_lib');

然后在设置完所需的配置之后,就像这样初始化类:

$this->image_lib->initialize($config);

这对我有用。

我发布这个以防其他人遇到同样的问题,所以他们用CodeIgniter而不是另一个库来解决它。

答案 3 :(得分:0)

删除$config_image['new_image'] = 'uploads/thumbs/';并将$config['image_library'] = 'gd';更改为$config['image_library'] = 'gd2';

还要确保$ data数组包含full_path。

答案 4 :(得分:0)

简单的问题,文件权限是否正确?另一个提示是将CI错误记录设置为最高值,并查看它是否输出任何内容。