Resim Boyutlandırmak için image_lib Kütüphanesi Kullanımı

Aşağıdaki tüm içeriği Codeigniter'ın kullanım kılavuzundan Türkçeleştirdim. Sayfanın tamamını Türkçeleştirip yazmadım. Resmin üzerine yazı yazma ve sonraki kısımları almadım. Zamanla onları da alırım diye umuyorum...

Resim Manipülasyon Sınıfı

Codeigniter'ın resim manipülasyon sınıfı şu eylemleri gerçekleştirebilmenizi sağlar:
  • Resmi yeniden boyutlandırmak
  • Resmin küçük resmini (thumbnail) oluşturmak
  • Resmi kırpmak
  • Resmi döndürmek
  • Resim üzerine yazı yazmak
Bu sınıf, 3 ana görüntü kütüphanesini destekler: GD/GD2, NetPBM ve ImageMagick

Not: Resim üzerine yazı yazılacaksa GD/GD2 kütüphanesi kullanılmalıdır.

Kütüphanenin Çağırılması

Codeigniter'da diğer kütüphaneleri çağırdığımız gibi, Controller'da kütüphaneyi çağırmak için şu komut kullanılır:
$this->load->library('image_lib');

Kütüphane bu şekilde bir kez yüklendiğinde Controller sınıfına dahil edilmiş olur ve fonksiyonlarına şu şekilde erişilebilir:
$this->image_lib->fonksiyon...

Resmin İşlenmesi

Resmi nasıl işlerseniz işleyin (boyutlandırma, küçük resim oluşturma, kırpma, döndürme..), genel işlemler aynıdır. Yapacağınız işlemin ihtiyacı olan birkaç ayar yapacaksınız ve yapacağınız işlemin fonksiyonunu çağıracaksınız. 

Örneğin; hedef olarak gösterilen resim.jpg adlı resim dosyasının küçük resmini oluşturan ve aynı klasöre resim_thumb.jpg (_thumb eki varsayılandır.) adıyla kaydeden komutlar şöyle olabilir:
  1. $config['image_library'] = 'gd2'
  2. $config['source_image'] = '/resmin/yolu/resim.jpg'
  3. $config['create_thumb'] = TRUE
  4. $config['maintain_ratio'] = TRUE
  5. $config['width'] = 75
  6. $config['height'] = 50
  7. $this->load->library('image_lib'$config);
  8. $this->image_lib->resize();
Bu kod ile satır satır demiş olduk ki:
  1. Görüntü kütüphanesi olarak GD2 kullan.
  2. Kaynak resim '/resmin/yolu/' dizinindeki 'resim.jpg'dir.
  3. Küçük resim oluşturacaksın.
  4. Resmin en/boy oranını koru.
  5. Genişlikteki sınır 75px olacak.
  6. Yükseklikteki sınır 50px olacak.
  7. Bu ayarlarla image_lib kütüphanemizi çağır.
  8. Yeniden boyutlandırma işlemini çalıştır.
Böylelikle, resim.jpg ile aynı klasör içine, 75px x 50px bir alan içine sığacak şekilde küçültülmüş şekilde resim_thumb.jpg adlı bir dosya oluşmuş olacak.

Not: Görüntü sınıfının herhangi bir işlemi yapabilmesi için bu işlerin yapılacağı klasörün yazma izinleri verilmiş olmalıdır.

Not: Görüntü işleme için bazen önemli miktarda sunucu belleği kullanılır. Eğer görüntü işlerken bellek hatalarından şikayetçiyseniz PHP ayarlarında izin verilen maksimum dosya boyutu ve/veya bellek sınırlarını güncelleyebilirsiniz.

İşleme Metotları

$this->image_lib->resize()
$this->image_lib->crop()
$this->image_lib->rotate()
$this->image_lib->watermark()

Bu 4 işlemin hepsi de sonuçta TRUE veya FALSE değeri döndürür. Bu sayede işlem herhangi bir sebepten başarısız olduğunda bunu yakalayabilir ve aşağıdaki şekilde hata metnini ekrana yazabilirsiniz:
if $this->image_lib->resize() ) {
    echo $this->image_lib->display_errors();
}

Not: İsteğe bağlı olarak, şu şekilde hata mesajına HTML etiketleri ekleyebilirsiniz:
echo $this->image_lib->display_errors('<p>''</p>');


Ayarlar

Aşağıda yazdığım ayarlar, görüntü işlemeyi ihtiyacınıza göre uyarlamanızı sağlar. Tüm ayarların tüm işlemlerde kullanılmadığını unutmayın. Mesela x/y eksen ayarları (x_axis ve y_axis) sadece resmi kırparken ( $this->image_lib->crop() ) kullanılır. Aşağıdaki tabloda bulunan "İşlemler" sütunu, hangi ayarın hangi işlemde kullanıldığını göstermektedir.

İşlemlerin Kısaltmaları:
R - Resmin yeniden boyutlandırılması (Resize)
C - Resmin kırpılması (Crop)
X - Resim yönünün değiştirilmesi
W - Resim üzerine yazı yazılması (Watermark)
AyarVarsayılan DeğerAlabileceği DeğerlerAçıklamaİşlemler
image_libraryGD2GD, GD2, ImageMagick, NetPBMKullanılacak resim kütüphanesini belirler.R, C, X, W
library_pathYok?ImageMagick veya NetPBM kütüphanenize giden yolu gösterir. Bu kütüphanelerden birini kullanacaksanız yolunu da göstermeniz gerekmektedir.R, C, X
source_imageYok?Resmin yolu ve/veya adını belirtir. Bu yolu belirtirken URL belirtmeyin (Mesela base_url() kullanmayın veya http://www... gibi başlamayın). Mutlak (absolute) veya göreli (relative) sunucu yolu (server path) kullanın.R, C, X, W
dynamic_outputFALSETRUE/FALSE (boolean)Yeni resmin diske yazılması veya dinamik olarak oluşturulup oluşturulmayacağını belirtir. Not: Eğer dinamik ayarı belirtirseniz (TRUE derseniz) tek seferde yalnız bir resim gösterebilirsiniz ve resim kaydedilmez. Resmi üstbilgilerle (headers) birlikte ham görüntünün kodlarını tarayıcıya gönderebilirsiniz. (Mesela bir background-image:url(...) ile gösterebilirsiniz.)R, C, X, W
file_permissions0644(integer)Oluşturulacak resmin izinlerini belirler. (Tabii ki 8 tabanında rakamlardan oluşacak integer değer verilmelidir.)R, C, X, W
quality90%1-100%Resim ne kalitede kaydedilsin? Tabii ki ne kadar kaliteliyse resmin hafıza boyutu o kadar büyük olacaktır. 1% ile 100% arasında değer alır.R, C, X, W
new_imageYok?Kaydedilecek resmin yolu/adı. Resmin bir kopyasını oluştururken bu ayarı kullanacaksınız. Yol gösterirken yine URL belirtmeyin; göreli veya mutlak yolu belirtin.R, C, X, W
widthYok? (integer)Genişlik belirtir.R, C
heightYok? (integer)Yükseklik belirtir.R, C
create_thumbFALSETRUE/FALSE (boolean)Küçük resim oluşturulacaksa belirtilir.R
thumb_marker_thumb? (string)Oluşturulacak küçük resmin adına eklenecek yazıdır.R
maintain_ratioTRUETRUE/FALSE (boolean)Yeniden boyutlandırırken veya sert değerler kullanırken en-boy oranının korunup korunmayacağını belirtir.R, C
master_dimautoauto, width, heightYeniden boyutlandırırken veya küçük resim oluştururken ana eksen olarak neyin kullanılacağını belirtir. Mesela resmi 100x75 piksele yeniden boyutlandıracağınızı varsayalım. Bu ayar ile hangi eksenin sabit değer olarak kullanılacağını belirtirsiniz. "auto" derseniz görüntünün daha geniş mi yoksa yüksek mi olduğuna göre ekseni otomatik olarak ayarlar.R
rotation_angleYok90, 180, 270, vrt, horResmin dönüş açısını belirtir. 90 derseniz saat yönünde döner. 180 derseniz tepetaklak olur. 270 derseniz saat yönünün tersine dönmüş olur. vrt derseniz dikeyde ayna görüntüsünü, hor derseniz yatayda ayna görüntüsünü elde edersiniz.X
x_axisYok?Görüntüyü, belirteceğiniz X koordinatına göre kırpar. Mesela 30 değerini verirseniz görüntünün X ekseninde (yatay eksende) soldan 30px'e kadar olan kısmını kırpar.C
y_axisYok?Görüntüyü, belirteceğiniz Y koordinatına göre kırpar. Mesela 30 değerini verirseniz görüntünün Y ekseninde (dikey eksende) üstten 30px'e kadar olan kısmını kırpar.C

Yorumlar

Bu blogdaki popüler yayınlar

Sunucuda Session Dosyalarının Tutulduğu Dizinde İzin Problemi