PHP resim boyutlandırma, resimlere efekt verme ve resimleri önbelleğe alma işlemlerini yapabilen hazır kodlanmış bir sınıf olan TimThumb kullanımı konusundan bahsedeceğim.
Normalde web sitesine yüklenen bir resim sitenin açılış hızını düşürmeden web sitenin çeşitli bölümlerinde farklı boyutlarda gösterilmesi isteniyorsa farklı genişlik ve yüksekliklere sahip olan birçok kopyasını oluşturmak gerekiyor. Özellikle wordpress tabanlı sitelerde varsayılan resim optimizasyonu yöntemi budur. Yüklenen bir resim aslında 6 – 7 resim şeklinde farklı boyutlarda kaydedilir. Oluşturulan bu resimler ise sitedeki farklı bölümlerde gösterilir. Böylelikle site hızını arttırmak amaçlanır.
Bu yöntemin dezavantajı ise, bir resim yüklerken birden fazla resim dosyası oluşturulduğundan dolayı web sitenin diskte kapladığı alan normalden daha hızlı bir şekilde artacak olmasıdır.
Biz ise bu sayfada öğreneceğiniz timthumb kullanımı ile bu karmaşayı ortadan kaldırabiliyoruz. Peki timThumb nedir? Timthumb, resimlerin ayrı ayrı kopyalar halinde oluşmasına gerek kalmadan esnek bir şekilde otomatik PHP resim boyutlandırma işleminin yapılabilmesini sağlar. Kullanımı ise oldukça basit.
PHP uzantılı timthumb dosyasına gönderilen resmin URL adresi ile istenilen boyut değerlerini göndererek ilgili resmi istenildiği şekilde boyutlandırıyoruz. Bir diğer ifadeyle pratik bir şekilde PHP thumbnail oluşturma işlemini yapabilmiş oluyoruz.
Diyelim ki bir resim orijinal olarak genişliği 1200px, yüksekliği 900px ve 1 MB boyutunda olsun. Bu resmi yukarıdaki HTML kodu ile boyutunu 250×200 olarak site içerisinde göstermiş olsak bile aslında 1200px genişliğinde, 900px yüksekliğinde ve 1 MB boyutundaki bir resmi sayfa içerisinde gösteriyoruz. Dolayısıyla dosya boyutu azalmıyor ve kullanıcı resmi küçük bir şekilde görmüş olsa bile 1 MB boyutundaki dosyayı indirmesi gerekiyor. Bir web sayfasında bunun gibi birden fazla resim kullanılabileceğini düşünün. Siteyi oldukça fazla yavaşlatacaktır.
Biz ise bu resmin bir başka kopyasını oluşturulmasına gerek kalmadan timthump kullanımı ile otomatik olarak boyutlandırmış olacağız. Ayrıca resimlere cache işlemi uygulanmış olacak, istenilen resimlere efekt uygulayabilir, resmin kalitesini 1’den 10’a olacak şekilde bir oran belirleyerek düşürebilir ve dosya boyutunu daha düşük bir hale getirebiliriz.
Not: Timthumb kullanımı ile php resmi otomatik boyutlandırma işlemi yapılırken, web site daha fazla işlem yapacağından dolayı sunucunun işlemcisine daha fazla yük binecektir. Ancak boyutlandırılan resimlerin önbelleklenmesi ve cache dosyalarının oluşması ile birlikte bu yük nisbeten azdır. Yine de çok yoğun bir şekilde kullanılmamasında fayda var.
Artık timthumb kullanarak otomatik PHP resim boyutlandırma işlemi nasıl yapılır? Görelim.
TimThumb Resim Optimizasyonu
Timthumb kullanımı için gerekli konuları aşağıda görebilirsiniz. Ayrıca “timthumb.php” dosyasının da bulunduğu çalışan timthumb örneğini indirebileceğiniz linki yazının en altında bulabilirsiniz.
Boyutlandırılmamış normal resim kullanımı aşağıdaki gibi.
PHP resmi otomatik boyutlandırma için etiketine yazılacak URL yolu örnek olarak aşağıdaki gibidir.
Resmin yolunu, genişliğini, yüksekliğini ve kalitesini URL yoluyla “timthumb.php” dosyasına gönderiyoruz ve resmin verilen değerlere göre otomatik boyutlandırılmasını sağlıyoruz. Böylelikle istersek aynı resmi web sitenin başka bir yerinde istediğimiz boyutlarda otomatik göstermiş oluyoruz.
Yukarıdaki adresi inceleyelim. “timthumb.php” dosyasına “resimler” klasöründeki “resim1.jpg” resim dosyasının 250 piksel genişliğinde, 200 piksel yüksekliğinde, kalitesinin 100% olmasını ve 1 no lu efektin uygulanacak şekilde ayarlanacağını belirtmiş oluyoruz ve bu özelliklere sahip resmi etiketinde gösterilmesini sağlıyoruz.
- Parametre olarak girilen resim boyut değerlerinde genişlik değerini ‘0’ olarak girerseniz, yükseklik değerine göre otomatik genişlik verilir.
- Aynı şekilde yükseklik değerini ‘0’ olarak girerseniz bu sefer genişlik değeri yükseklik değerine göre otomatik olarak belirlenir.
- Resmin kalitesini 100 ve aşağı bir değer belirleyerek ayarlayabilirsiniz. Efekt değerini boş bırakırsanız efekt uygulanmamış olur.
- Efekt uygulamak isterseniz 1 ile 11 arasında değer girebilirsiniz.
Ayrıca timthumb kullanılarak çağırılan resim için resim cache işlemi gerçekleşiyor. Böylelikle resim aynı boyutta otomatik getirilmek istenirse tekrar boyutlandırma işlemi yapılmadan resim cache dosyasından direkt çağrılmış oluyor. Böylelikle, hem web site hızlandırma işlemi yapıyoruz hem de resimler için ayrı ayrı yükleme işlemi yapılmasından kurtuluyoruz.
etiketine girilen URL adresi görünüş olarak biraz tuhaf gözüküyor gibi. Resmin adres kısmında “timthumb.php” dosyası belli oluyor. SEO uyumlu resim optimizasyonu için uygun bir link yapısı değil haliyle. Ancak bunu htaccess ile düzeltebiliriz. Htaccess dosyasına şu kodu ekliyoruz ve timthumb rewrite işlemini gerçekleştiriyoruz.
RewriteEngine On
RewriteRule ^([^/]*)/([^/]*)/([^/]*)(/?)$ timthumb.php?folder=$1&src=$3&prop=$2
Htaccess dosyası ile ur ayarlaması yapıldıktan sonra artık resimleri bu şekilde çağırabiliriz.
Böylelikle orantılı olarak PHP thumbnail oluşturma yani küçük resim oluşturma işlemlerini pratik bir şekilde timthumb ile yapabilir hale geliyoruz. Buradan TimThumbOrnek isimli çalışır haldeki örneği indirip kendi bilgisayarınızda çalıştırabilirsiniz.
İndirilen dosyayı olduğu gibi kullanırsanız çalışır. Farklı bir klasör yada dizinde çalışması için “timthumb.php” dosyası içerisinde aşağıdaki satırda “timthumb_ornek” kısmında dizin ismine göre ufak bir değişiklik yapmanız gerekiyor.
$this->src = "https://muhammedyaman.com/timthumb_ornek/".$this->param('folder')."/".$this->param('src');
Ayrıca ayarlanan resimlerin cache dosyalarının tutulduğu klasörün yolunu “timthumb.php” dosyasındaki “if(! defined(‘FILE_CACHE_DIRECTORY’) ) define (‘FILE_CACHE_DIRECTORY’, ‘./cache’);” satırını düzenleyerek ayarlayabilirsiniz.