使用CodeIgniter创建图像缩略图时出现问题

时间:2011-08-14 22:17:58

标签: php codeigniter image-manipulation

我正在尝试使用图像处理类来创建图像的缩略图。这是我的相关方法:

public function create_thumbnail($source_img, $name, $file_ext)
{
    $config['image_library'] = 'gd2';
    $config['source_image'] = $source_img;
    $config['create_thumb'] = TRUE;
    $config['maintain_ratio'] = TRUE;
    $config['width'] = 50;
    $config['new_image'] = 'C:\xampp\htdocs\\' .  $name . 't' . $file_ext;

    $this->load->library('image_lib', $config);
    if(!$this->image_lib->resize())
    {
        echo $this->image_lib->display_errors();exit;
    }
    return TRUE;
}

运行脚本时,出现此错误:

Unable to save the image. Please make sure the image and file directory are writable.

数组元素$config['new_image']的计算结果如下:C:\xampp\htdocs\EuzIDct.jpg,所以我知道不是这样的。源文件在调用方法时也存在,因此它也不存在。

有没有人知道这里发生了什么?我问了谷歌这个问题,但是CI论坛的解决方案是说明一个绝对路径也不是一个相对路径,这就是我正在做的事情,但是它不起作用。

谢谢!

4 个答案:

答案 0 :(得分:0)

首先尝试删除文件路径中的额外反斜杠。

C:\xampp\htdocs\

接下来,右键单击并检查该目录的文件权限。

如果失败,请以管理员身份运行xampp服务器作为短期修复程序,以查看是否存在其他权限问题。

答案 1 :(得分:0)

可能您正在运行权限问题。只是尝试更改您的文件夹权限。 虽然您的image_lib-> resize()方法不正确,但我几乎不建议您使用其他方法来调整这些图像的大小。通常,777权限会在安全性方面暴露您的应用程序。 我建议使用FTP来移动这些缩略图而不是codeigniter image_lib。 如果仍然坚持使用写入权限,请右键单击C:\ xampp \ htdocs \ - >礼节,标签安全,编辑,添加用户每个人,并给他完全访问(窗口)。对于Linux-Mac,只需一个简单的chmod -R 777。

答案 2 :(得分:0)

我以前遇到过这个问题。在我的例子中,我把图像源和new_image放在没有base_url或REAL_PATH:

的情况下
public function create_thumbnail($file_name='2012_02_23_15_06_00_1.jpg'){
    $config['image_library'] = 'gd2';
    $config['source_image'] = 'assets/img/content/article/'.$file_name;
    $config['create_thumb'] = FALSE;
    $config['maintain_ratio'] = TRUE;
    $config['width'] = 210;
    $config['height'] = 160;    
    $config['new_image'] = 'assets/img/content/article/thumb/thumb_' .  $file_name;

    $this->load->library('image_lib', $config);
    if(!$this->image_lib->resize())
    {
        echo $this->image_lib->display_errors();exit;
    }
    return TRUE;
}

请参阅? 你没有把

$config['new_image'] = base_url().'assets/img/content/article/thumb/thumb_' .  $file_name;

$config['new_image'] = 'assets/img/content/article/thumb/thumb_' .  $file_name;

使用base_url(),您的image_source或new_image将具有前缀http://domain_or_localhost

使用像C://htdocs/blablabla/之类的REAL_PATH只会使诸如不可写等的事情复杂化等等

答案 3 :(得分:0)

您的新图片路径将出错。 它将图像存储在根目录中。 $ config ['new_image'] ='/ folder name / new_image.jpg';