2011-07-03 39 views
6

Tek bir fotoğrafın iki görüntüsünü oluşturmam gerekiyor. Bu görüntüler sabit genişliğe sahip olmalıdır - 180 ve 300 piksel.CodeIgniter'de çoklu yeniden boyutlandırma

Mevcut sonuçların altında. Bu işlev, iki görüntüden birini yeniden boyutlandırabilir ve oluşturabilir. Herkes ikinci imgede başarısız oldu, bütün gün uğraşıyorum ama sebep bulamıyorum. Yardıma ihtiyacım var.

$this->_resize($data['upload_data']['file_name'], 300); 
$this->_resize($data['upload_data']['file_name'], 180); 
private function _resize($file_name, $size) { 
      $config['image_library'] = 'gd2'; 
      $config['source_image'] = 'img/upload/' . $file_name; 
      $config['dest_image'] = base_url() . 'img/'; 
      $config['create_thumb'] = TRUE; 
      $config['thumb_marker'] = '_' . $size; 
      $config['maintain_ratio'] = FALSE; 
      $config['width'] = $size; 
      $config['height'] = $size; 
      $this->load->library('image_lib', $config); 
      $result = $this->image_lib->resize(); 

      $this->image_lib->clear(); 
      return; 
     } 

Ben kullanım CodeIgniter'ın olduğum 2.02

+0

görünüyor koymayın. Dokümanlardaki 'dest_image' seçeneğini görmüyorum, belki bunun yerine $ config ['new_image'] ayarlamalısınız? - http://codeigniter.com/user_guide/libraries/image_lib.html – jessica

+0

'thumb_marker' yolu yapacaktır ... –

+0

Dediğiniz gibi değiştirdim, ancak sunucu dönüş erişim hatası (Görüntü kaydedilemedi. Lütfen görüntü ve dosya dizininin yazılabilir olduğundan emin olun.). – NiLL

cevap

1

Nill

Sorun, ilk işlemde, komut dosyanızın başlangıç ​​dosyasını başka bir klasöre taşıdığı için gerçekleştiğini düşünün. kullanmayı deneyin:

$config['new_image'] = base_url() . 'img/'; 

yerine

$config['dest_image'] = base_url() . 'img/'; 
+0

Görüntü kaydedilemiyor. Lütfen resim ve dosya dizininin yazılabilir olduğundan emin olun. Görüntü kaydedilemiyor. Lütfen resim ve dosya dizininin yazılabilir olduğundan emin olun. Sunucunuz bu görüntü türünü işlemek için gereken GD işlevini desteklemiyor. – NiLL

+0

Tüm 777 için chmod – NiLL

+0

Ve aptal bir soru ama GD yüklü mü?) –

5

Bu kullanıcı kılavuzundan, size yardımcı olabilecek

İyi bir uygulama gibi, başarısızlık üzerine bir hatayı gösteren, şartlı işleme fonksiyonunu kullanmaktır Bu:

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

Sunucunuz bu tür bir görüntüyü işlemek için gereken GD işlevini desteklemiyor. – NiLL

+0

İkinci iterasyonda bana gönderildi. – NiLL

15

Dont yük image_lib birden çok kez. özdevinimli_yükle kütüphanelerini de image_lib ekleyin ve kendimi bu sorunu buldum

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

için

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

değiştirin.

public function create_thumbnail($file_name='2012_02_23_15_06_00_1.jpg'){ 
    $this->layout = false; 
    $image_url = PATH_TO_IMAGE_ARTICLE.DIRECTORY_SEPARATOR; 
    $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; 
} 

bakınız: Benim durumumda, ben base_url yolundan veya REAL_PATH olmadan görüntü kaynağı ve new_image koydu? bunu görüntüyü kaydederken nereye ile ilgili bir sorun olabilir gibi

ama

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

base_url() kullanarak, image_source veya new_image 'http: // domain_or_localhost' önekine sahip olacaktır. REAL_PATH gibi C: // htdocs/blablabla kullanarak/sadece yazılabilir, vb. –

İlgili konular