【问题标题】:Codeiginter Multiple Image Resize Not Working As ExpectedCodeigniter 多个图像调整大小未按预期工作
【发布时间】:2015-09-28 10:25:48
【问题描述】:

我正在尝试遍历一组照片并调整每张照片的大小两次。一次用于拇指,然后一次用于全尺寸图像。在第一个循环中一切正常,但第二个、第三个、第四个等从未创建缩略图版本。我无法弄清楚我做错了什么。谁能从下面的代码中看出我的错误?

$this->load->library('image_lib');
foreach( $photos as $current => $photo ) {                

    // Create Thumb
    $thumb_config = array();
    $thumb_config['create_thumb'] = TRUE;
    $thumb_config['image_library'] = 'gd2';
    $thumb_config['source_image'] = $photo['full_path'];
    $thumb_config['maintain_ratio'] = TRUE;
    $thumb_config['width'] = 550;
    $thumb_config['height'] = 550; 

    $this->image_lib->clear();
    $this->image_lib->initialize($thumb_config);
    $this->image_lib->resize();
    // Resize Photo
    $resize_config = array();
    $resize_config['create_thumb'] = FALSE;
    $resize_config['image_library'] = 'gd2';
    $resize_config['source_image'] = $photo['full_path'];
    $resize_config['maintain_ratio'] = TRUE;
    $resize_config['width'] = 1500;
    $resize_config['height'] = 1500;

    $this->image_lib->clear();
    $this->image_lib->initialize($resize_config);
    $this->image_lib->resize(); 
}

【问题讨论】:

标签: php image codeigniter image-resizing


【解决方案1】:

尝试将clear()s 放在resize() 之后,如下所示:

这是我目前的结构:

|--- assets
|    |--- images
|    |    |--- changed
|    |    |--- test.png
|    |    |--- test2.jpg

在我运行下面的代码后,我有:

|--- assets
|    |--- images
|    |    |--- changed
|    |    |    |--- test.png
|    |    |    |--- test2.jpg
|    |    |    |--- test_thumb.png
|    |    |    |--- test2_thumb.jpg
|    |    |--- test.png
|    |    |--- test2.jpg

这是我使用的代码:

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

    $photos = array(
        array(
            "full_path" => "assets/images/",
            "name" => "test.png"
        ),
        array(
            "full_path" => "assets/images/",
            "name" => "test2.jpg"
        ),
    );
    foreach ($photos as $current => $photo) {
        // Create Thumb
        $thumb_config = array();
        $thumb_config['create_thumb'] = TRUE;
        $thumb_config['image_library'] = 'gd2';
        $thumb_config['source_image'] = $photo['full_path'] . $photo['name'];
        $thumb_config['new_image'] = $photo['full_path'] . "changed/" . $photo['name'];
        $thumb_config['maintain_ratio'] = TRUE;
        $thumb_config['width'] = 550;
        $thumb_config['height'] = 550;

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

        if (!$this->image_lib->resize()) {
            echo $this->image_lib->display_errors();
        }
        $this->image_lib->clear();

        // Resize Photo
        $resize_config = array();
        $resize_config['create_thumb'] = FALSE;
        $resize_config['image_library'] = 'gd2';
        $resize_config['source_image'] = $photo['full_path'] . $photo['name'];
        $resize_config['new_image'] = $photo['full_path'] . "changed/" . $photo['name'];
        $resize_config['maintain_ratio'] = TRUE;
        $resize_config['width'] = 1500;
        $resize_config['height'] = 1500;

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

        if (!$this->image_lib->resize()) {
            echo $this->image_lib->display_errors();
        }
        $this->image_lib->clear();
    }

【讨论】:

  • 谢谢,但它仍然不会创建其他缩略图。这很奇怪,因为它会进行大调整,只是不会制作缩略图。
  • 它永远不会出错。我什至做了一个 $thumb = $this->image_lib->resize();然后 var_dump( $thumb ) 并返回 true ,就像函数成功完成一样。我完全被这个难住了。
  • 我刚刚在我的本地机器上尝试了代码,它工作得很好。我认为问题在于它替换了原始图像并且您希望它们被复制。在这种情况下,您可能希望使用此选项:$config['new_image'] 并告诉它以新名称存储图像的位置。
  • 谢谢,使用该参数我能够让它工作!
猜你喜欢
  • 2013-12-13
  • 2016-07-22
  • 2016-11-10
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多