- 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.
Çoğu modern sunucuda bu kütüphane yüklü gelir. Kodlamaya başlamadan önce aktif olup olmadığını şu komutla kontrol edebilirsiniz:
Aşağıdaki fonksiyon; JPG, PNG ve WEBP formatlarını destekler, resmi en-boy oranını koruyarak (aspect ratio) yeniden boyutlandırır.
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.
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
| Fonksiyon | Görevi | Önemi |
|---|---|---|
| imagecreatetruecolor | Siyah, boş bir tuval oluşturur. | Yeni resmin temelini atar. |
| imagecopyresampled | Pikselleri yumuşatarak kopyalar. | imagecopyresized'dan çok daha kalitelidir. |
| getimagesize | Resmin boyutlarını ve tipini döndürür. | Oran hesaplamak için şarttır. |
| imagedestroy | RAM'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.