You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter批量生成缩略图仅成功一张的问题排查

问题排查与修复

你的代码只生成一张缩略图的核心原因是:CodeIgniter的image_lib库在循环中重复加载时没有重置配置。第一次加载库后,后续循环调用$this->load->library()不会重新初始化新的配置,而是复用第一次的实例,导致后续图片的处理逻辑失效。

修复方案

把image_lib的加载移到循环外,每次循环通过initialize()方法重新传入新的配置,而不是重复加载库:

function generate_thumb(){ 
    $data['record'] = $this->model_produk->gambar_produk();
    // 先加载一次图片处理库
    $this->load->library('image_lib');

    foreach ($data['record']->result_array() as $key => $ss) {
        $thumbnailConfig = array();
        $imagePath = 'asset/img_produk/' . $ss['image_produk'];

        $imageInfo = pathinfo($imagePath);
        $fileExtension = strtolower($imageInfo['extension']);

        if (!in_array($fileExtension, ['jpg', 'jpeg', 'png'])) {
            continue; // 跳过不支持的格式
        }

        $thumbnailConfig['image_library'] = 'gd2';
        $thumbnailConfig['source_image'] = $imagePath;
        $thumbnailConfig['new_image'] = 'asset/img_produk/thumb/';
        $thumbnailConfig['create_thumb'] = true;
        $thumbnailConfig['maintain_ratio'] = TRUE;

        $img = getimagesize($imagePath);
        $new_width = $img[0] * 0.4;
        $new_height = $img[1] * 0.4;

        $thumbnailConfig['width'] = $new_width;
        $thumbnailConfig['height'] = $new_height;

        // 重置并初始化新的配置
        $this->image_lib->clear();
        $this->image_lib->initialize($thumbnailConfig);
        
        if (!$this->image_lib->resize()) {
            echo $this->image_lib->display_errors();
        }
    }
}

额外检查点

  • 确认asset/img_produk/thumb/文件夹存在且有写入权限(755或777,根据服务器配置调整)
  • 检查后续图片文件是否存在,路径是否正确(可以在循环中打印$imagePath验证)
  • 如果使用GD2库,确保服务器已安装并启用GD扩展

内容的提问来源于stack exchange,提问作者twodollaryus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 02:24:54