2012-07-22 69 views
2

目前我正在學習和嘗試CodeIgniter的能力。但我堅持同時製作多個縮略圖。也許,我搞砸了我的頭太多使用Wordpress,並試圖做笨這樣的事情,但是不管怎麼說,這裏是我的代碼CodeIgniter中的多個縮略圖一次

<?php 

class Gallery_model extends CI_Model { 

var $gallery_path; 

function __construct() { 
    parent::__construct(); 
    $this->load->helper('functions'); 
    $this->gallery_path = realpath(APPPATH . '../uploads'); 
} 

function do_upload() { 

    $config = array(
     'allowed_types' => 'jpg|jpeg|gif|png', 
     'upload_path' => $this->gallery_path, 
     'max_size' => 2000 
    ); 

    $this->load->library('upload', $config); 
    $this->upload->do_upload(); 
    $image_data = $this->upload->data(); 


    $image_sizes = array(
     'thumb' => array(150, 100), 
     'medium' => array(300, 300), 
     'large' => array(800, 600) 
    ); 

    foreach ($image_sizes as $resize) { 

     $config = array(
      'source_image' => $image_data['full_path'], 
      'new_image' => $this->gallery_path . '-' . $resize[0] . 'x' . $resize[1], 
      'maintain_ration' => true, 
      'width' => $resize[0], 
      'height' => $resize[1] 
     ); 

     $this->load->library('image_lib', $config); 
     $this->image_lib->resize(); 
    } 
} 
} 

此刻,我能夠創建只是一個形象它自我,但我不能用這個縮略圖。也許有人可以提高代碼,並得到它的工作:)

PS - 我試過只是把$ image_sizes後,把它放在其他獨立的PHP文件中,運行它,並var轉儲foreach中的$配置,和它似乎在工作。

+0

好的,我發現了一個錯誤,是這樣的,它應該是這樣的:config array - >'new_image'=> $ this-> gallery_path。 '/'。 $ image_data ['raw_name']。 ' - '。 $ resize [0]。 'X' 。 $調整[1]。 $ image_data ['file_ext']但我一次只能製作一個縮略圖,並非全部。 – Rozkalns 2012-07-22 19:04:55

回答

11

使用方法如下:

$this->load->library('image_lib'); 
foreach ($image_sizes as $resize) { 

    $config = array(
     'source_image' => $image_data['full_path'], 
     'new_image' => $this->gallery_path . '-' . $resize[0] . 'x' . $resize[1], 
     'maintain_ration' => true, 
     'width' => $resize[0], 
     'height' => $resize[1] 
    ); 

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

initialize作品比與$config加載庫更好。