Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer

PHP Thumbnailer Sınıfı v2.0

2 min read

Genelde yazılarımın altyapısını tecrübelerim oluşturuyor. Projelerimde kullandığım teknikler, sınıflar gibi şeyler güzel birer makale konusu olabiliyor. Bu çizgide size tanıtmak istediğim bir sınıf var; PHP Thumbnailer Sınıfı v2.0. Dünyada bir çok web programcısı tarafından takdir edilen bu sınıf, bir WordPress eklentisi olan NextGEN Galeri’de de kullanılmakta. Fotoğrafları düzenlemek (yeniden boyutlandırma, döndürme, kesme, yansıma ekleme vb.) için ideal bir sınıf diyebilirim.

Özellikleri

PHP Thumbnailer Sınıfı v2.0 ile aşağıdaki işlemleri kolayca gerçekleştirebilirsiniz.

  • Resmi tercihe bağlı bir şekilde kırpabilirsiniz. Örneğin tam ortasından istediğiniz boyutlarda bir kareyi kesip kullanabilirsiniz.
  • Resmi istediğiniz yöne doğru 90 derece döndürebilirsiniz.
  • Resimlerinize yansıma ekleyebilirsiniz.
  • Yüzdeye göre veya belirteceğiniz genişlik ve yüksekliğe göre kalitesi bozulmadan resmin boyutunu değiştirebilirsiniz.
  • Resmi kalitesini yüzde (0-100%) oranında değiştirebilirsiniz.
  • Bir anda birden çok resmi sınıfı veya resimleri yeniden çağırmadan düzenleyebilirsiniz.
  • Resimlerin dinamik olarak (İngilizce’de “on the fly” tabiri kullanılıyor) oluşturulmasını sağlayabilirsiniz. Yani ziyaretçilerinize küçültülerek görünür fakat aslında küçültülmüş yeni bir dosya yoktur.

Yukarıda bu sınıfın özelliklerinden sadece birkaçını saydım. Böyle gelişmiş bir sınıfın kullanımının oldukça karmaşık olduğunu düşünebilirsiniz fakat aksine gerçekten çok kolay.

Kullanımı

Resmi Çağırmak
Aşağıdaki gibi basit bir kodla resmi çağırıp sınıfa dahil ederek uygulamamıza başlayabiliyoruz.
[php]<?php
include_once(‘thumbnail.inc.php’);
$thumb = new Thumbnail(‘galeri/kisisel/resim.jpg’);
?>[/php]
Yeniden Boyutlandırma
Resmi dilerseniz direk piksel cinsinden genişlik ve yüksekliğini belirterek yeniden boyutlandırabilirsiniz veya yüzde (%) belirterek belirli bir oranda boyutlandırma yapabilirsiniz.
[php]<?php
//Piksel belirterek boyutlandırma (genişlik,yükseklik)
$thumb->resize(250,250);

//Resmin boyutunu %50 oranında düşürme
$thumb->resizePercent(50);
?>[/php]
Resimden Parça Almak (Kırpma/Kesme)
Bu sınıf ile dilersek resmin tam ortasından belirteceğimiz oranda bir kesit alabiliriz ya da resmin dilediğimiz bir yerini ölçüsünü belirterek kesip alabiliriz.
[php]<?php
//Resmin tam ortasından 100×100 piksellik bir bölümü alır.
$thumb->cropFromCenter(100);

//Resmin belirteceğiniz konumundan kesit almanızı sağlar. (başlangıç (x), başlangıç (y), genişlik, yükseklik)
$thumb->crop(0,0,100,50);
?>[/php]
Resmi Döndürmek
Resmi saat yönünde (CW) veya saatin tersi yönünde (CCW) 90 derece döndürebilirsiniz.
[php]<?php
//Saat yönünde çevirme
$thumb->rotateImage(); //veya $thumb->rotateImage(‘CW’);
//Saatin tersi yönünde çevirme
$thumb->rotateImage(‘CCW’);
?>[/php]
Yansıma Eklemek
Resimlere createReflection() fonksiyonu ile yansıma eklebilir. Bu fonksiyonun alabileceği değerler;
createReflection($yuzde,$yansima,$seffaflik,$cizgi,$cizgiRengi);

  • $yuzde: Yüzde olarak yansıma miktarı
  • $yansima: Resmin yüzde olarak yansıma yapılacak yüksekliği
  • $seffaflik: Resmin yüzde olarak ne kadar şeffaf olacağı
  • $cizgi: Orjinal resmin çevresine bir çizgi çizilip çizilmeyeceği (true, false)
  • $cizgiRengi: Çizgi çizilecekse bunun rengi

Bu kodu örnek olarak şu şekilde kullanabilirsiniz.
[php]<?php
$thumb->createReflection(40,40,80,true,’#a4a4a4′);
?>[/php]

Erişim Bilgileri

Yukarıdaki kodların kullanıldığı ve resmin üzerinde yaptığı etkilerin gösterildiği test sayfasına şuradan ulaşabilirsiniz.

Sınıfı indirebileceğiniz ve kullanımını görebileceğiniz orjinal sayfası PHP Thumbnailer Class v2.0

Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer

17 Replies to “PHP Thumbnailer Sınıfı v2.0”

  1. Merhabalar ;
    * Resimlerin dinamik olarak (İngilizce’de “on the fly” tabiri kullanılıyor) oluşturulmasını sağlayabilirsiniz. Yani ziyaretçilerinize küçültülerek görünür fakat aslında küçültülmüş yeni bir dosya yoktur.

    bu şekilde servera fazla yük bindirmiş olmazmıyız ?

    1. Evet Arıkan, aynen dediğin gibi servera fazla yük demektir bu. Fakat tabi sınıfın böyle bir özelliği olması, onu kullanmak zorunda olduğumuz anlamına gelmesin. Ben sadece bünyesinde barındırdığı özellikleri listeledim.

  2. aman aman eleştirmek için yazmadım :D ,
    Birçok arkadaş bu şekilde bir kullanıma gidiyor da bilmek de fayda var die yazdım.Yanlış anlaşıldı ise kusura bakmayın.

  3. arıkan dediğin gibi sunucuya ek yük demektir hele hele trafiği yüksek sitelerde daha çok belli olur bu dediğin ama trafiği az olan web sitelerinde çok da fazla bir yük getireceğini zannetmiyorum. zira forumlardaki bir çok avatar vs resim albümleri vt de saklanıp bir image dosyası ile maksimum seviyede kullanıcının bilgisayarına cache yapılarak gösteriliyor.

  4. Merhaba çalışmalarınızı gayet başarılı buluyorum yanlız benım bır sorum olacaktı wordpress blog’uma yenı ekledığım temanın kullanmıs olduğu PHP Thumbnail eklentisi yuzunden ana sayfadakı kucuk resımlerı eklerken sorun yasıyorum ve hıc bır sekılde cıkmıyor yardım edebılırsenız sevınırım teşekkürler.

  5. @HoCaM, malesef sorunun hangi aşamada yaşandığı konusunda net bir bilgimiz yok. Bununla birlikte malesef kişisel yardımda bulunacak kadar zaman bulmam da imkanız şu günlerde :( Tek tavsiyem eğer yapabilirseniz temanın ilgili thumbnail fonksiyonunu iptal edip WordPress’in resim yükleme ve yüklerken küçültme fonksiyonlarından faydalanmanızdır.

  6. Evet sanırım sorduğum sorunun cevabını buldum, bu sınıfın içinde aradığım mevcut

    $thumb = PhpThumbFactory::create(‘test.jpg’);
    $thumb->adaptiveResize(100, 100);
    $thumb->show();

    100*100 ‘lük bir resim oluşturuyor, istediğim gibi..

  7. Merhabalar Dediğiniz script güzel yanlız bir sorum olucaktı ben png formtatını boyutlandırdıgımda arkaplan siyah geliyor bunu nasıl düzeltebılırım ?

  8. Merhaba, Thumbnailer sınıfını kullanarak resize edilen bir resmin üzerine yazı yazdırmak mümkünmüdür ?

  9. Konuyu hortlattım biliyorum ama merak ediyorum, Normalde bu sınıfımı kullanmak daha mantıklı yoksa Resimleri belli oranlarda küçültüp mysql den çekmek mi bu konuda düşüncelerinizi bekliyorum hangisi daha mantıklı yani sistemi yormadan bw fazla tüketmeden hangisi yapılandırılıp kullanmalıyız. 800 w bir resmi 400, 260, 180 bölüp çekmek mi yoksa bu sınıfımı daha iyi umarım anlatabilmişimdir. Teşekkürler.

  10. Merhaba,

    boyutlandırdığımız resmi kaydederken

    $thumb = PhpThumbFactory::create('/haber/manset1.jpg');
    $thumb->crop(100, 100, 300, 200);
    $thumb->save('haber/s_ssfsdf.jpg');

    kodunu kullanıyoruz. Aynı resmin birden fazla boyuna ihtiyacımız olduğunda tekrar kod yazmamak için nasıl bir döngü içerisine almalıyız ya da bu sınıfın böyle bir özelliği var mıdır ?

  11. Merhabalar

    Cannot show image, headers have already been sent

    bu hatayı alıyorum yardımcı olabilir misiniz ?

  12. Toplu halde WordPressdeki resimleri küçültebileceğim bir eklenti arıyordum. Bir türlü bulamadım. Yardımcı olabilirmisiniz?

Leave a Reply

Your email address will not be published. Required fields are marked *