Resim Boyutlandırma: GD Library ile Thumbnail Oluşturma

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Top Poster Of Month
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
Yüksek çözünürlüklü resimleri doğrudan listeleme sayfalarında kullanmak sitenizi yavaşlatır. Doğru yöntem, resmi yüklerken bir de küçük kopyasını (thumbnail) oluşturmaktır. PHP'de bu işlem için GD kütüphanesini kullanıyoruz.

1. GD Library Kontrolü​


Çoğu modern sunucuda bu kütüphane yüklü gelir. Kodlamaya başlamadan önce aktif olup olmadığını şu komutla kontrol edebilirsiniz:

PHP:
<?php
if (!extension_loaded('gd')) {
die("Hata: GD Library sunucunuzda yüklü değil!");
}
?>

2. Thumbnail Oluşturma Fonksiyonu​


Aşağıdaki fonksiyon; JPG, PNG ve WEBP formatlarını destekler, resmi en-boy oranını koruyarak (aspect ratio) yeniden boyutlandırır.

PHP:
<?php
function thumbnail_olustur($kaynak, $hedef, $yeni_genislik) {
// 1. Resim bilgilerini al
$bilgi = getimagesize($kaynak);
$genislik = $bilgi[0];
$yukseklik = $bilgi[1];
$tip = $bilgi[2];

// 2. En-boy oranını koruyarak yeni yüksekliği hesapla
$oran = $yeni_genislik / $genislik;
$yeni_yukseklik = floor($yukseklik * $oran);

// 3. Resim tipine göre kaynak oluştur
switch ($tip) {
    case IMAGETYPE_JPEG: $resim_kaynak = imagecreatefromjpeg($kaynak); break;
    case IMAGETYPE_PNG:  $resim_kaynak = imagecreatefrompng($kaynak); break;
    case IMAGETYPE_WEBP: $resim_kaynak = imagecreatefromwebp($kaynak); break;
    default: return false;
}

// 4. Boş bir tuval oluştur (Gerçek renk desteğiyle)
$yeni_resim = imagecreatetruecolor($yeni_genislik, $yeni_yukseklik);

// PNG ve WEBP için şeffaflık koruması (Opsiyonel)
imagealphablending($yeni_resim, false);
imagesavealpha($yeni_resim, true);

// 5. Yeniden boyutlandır (Resample - Kaliteli yöntem)
imagecopyresampled($yeni_resim, $resim_kaynak, 0, 0, 0, 0, $yeni_genislik, $yeni_yukseklik, $genislik, $yukseklik);

// 6. Kaydet (Kalite: 85)
imagejpeg($yeni_resim, $hedef, 85);

// 7. Hafızayı temizle
imagedestroy($resim_kaynak);
imagedestroy($yeni_resim);

return true;

}

// Kullanım örneği:
thumbnail_olustur("manzara.jpg", "manzara_kucuk.jpg", 300);
?>

Fonksiyonların Görevleri​


FonksiyonGöreviÖnemi
imagecreatetruecolorSiyah, boş bir tuval oluşturur.Yeni resmin temelini atar.
imagecopyresampledPikselleri yumuşatarak kopyalar.imagecopyresized'dan çok daha kalitelidir.
getimagesizeResmin boyutlarını ve tipini döndürür.Oran hesaplamak için şarttır.
imagedestroyRAM'deki geçici resmi siler.Sunucunun şişmesini önler.

3. Profesyonel İpuçları​



  • [] Aspect Ratio (Oran): Resimleri asla sabit genişlik ve yükseklik (örneğin 200x200) olarak zorlamayın, aksi halde resimler basık veya yayvan görünür. Her zaman yukarıdaki gibi bir oran hesaplayın.
    [] Hafıza Sınırı: Çok büyük resimleri (10MB+) işlerken PHP memory_limit hatası verebilir. Bu durumda ini_set('memory_limit', '256M'); komutuyla limiti artırmanız gerekebilir.
  • WebP Formatı: Google PageSpeed puanı için thumbnail'larınızı JPG yerine WEBP olarak kaydetmeyi (imagewebp) tercih edin.

Sonuç​


GD Library, PHP'nin en köklü ve güvenilir kütüphanelerinden biridir. Resimleri dinamik olarak boyutlandırmak sadece depolama alanından tasarruf etmenizi sağlamaz, aynı zamanda web sitenizin yüklenme hızını (LCP değerini) optimize ederek SEO'ya doğrudan katkıda bulunur.
 
Geri
Üst