jekcms yüklenen görselleri AVIF ve WebP'ye çeviriyor ve dört boyut üretiyor. Sunucunun neye ihtiyacı olduğunu, kalite ayarlarını, tarayıcının doğru formatı nasıl seçtiğini ve eski görsellerin nasıl dönüştürüldüğünü anlatıyoruz.
jekcms'e bir görsel yüklediğinizde dosya olduğu gibi saklanmıyor. Yükleme isteği sırasında görsel AVIF'e ve WebP'ye çevriliyor, dört farklı boyutta kopyası üretiliyor ve orijinal dosya siliniyor. Bu yazıda bu işlem hattının adımlarını, sunucudan ne beklediğini ve nerede sınırlarının olduğunu anlatıyoruz.
Neden AVIF
AVIF, aynı görsel kalitede JPEG'den belirgin biçimde küçük dosyalar üretiyor; WebP de JPEG'e göre küçük ama genellikle AVIF kadar değil. Güncel tarayıcıların hepsi AVIF gösterebiliyor. Desteklemeyen eski tarayıcılar için WebP yedek olarak duruyor. Ne kadar küçüldüğü fotoğrafa göre değişiyor: ayrıntılı bir fotoğrafla düz renkli bir grafik çok farklı sonuç veriyor. Kendi siteniz için sayı istiyorsanız birkaç gerçek görselinizi dönüştürmeden önce ve sonra karşılaştırın.
Adım Adım
1. Dosya alınır, gerçekten görsel olup olmadığı kontrol edilir
2. Boyut sınırı kontrol edilir (varsayılan 50 MB)
3. Uzun kenarı sınırı aşan görsel küçültülür (varsayılan 2560 px)
4. AVIF olarak kaydedilir (varsayılan kalite 60)
5. WebP olarak kaydedilir (varsayılan kalite 82)
6. Dört boyut üretilir: thumbnail, medium, large, pinterest
7. Dönüşüm başarılıysa orijinal JPEG/PNG/GIF silinir
8. Kayıt medya tablosuna yazılır
Uzun kenar sınırı ayarlardan 800 ile 4096 piksel arasında değiştirilebiliyor. Kalite değerleri de sabit değil: AVIF 40 ile 80, WebP 55 ile 95 arasında ayarlanabiliyor. Varsayılanlar web için yaygın kabul gören aralıklardan seçildi.
Görsel yeniden kodlandığı için telefon fotoğraflarındaki EXIF bilgileri (konum, cihaz, çekim zamanı) yeni dosyalara taşınmıyor.
Boyutlar
thumbnail: 400x400, ortadan kırpılmışmedium: en fazla 800 piksel, oran korunaraklarge: en fazla 1600 piksel, oran korunarakpinterest: 1000x1500, ortadan kırpılmış
Thumbnail, medium ve large ölçüleri ayarlardan değiştirilebiliyor. Kırpma her zaman görselin ortasından yapılıyor; yüz ya da konu algılama yok. Ana nesnesi kenarda duran bir fotoğrafta kırpılmış boyutları kontrol etmekte fayda var.
Sunucudan Beklenenler
Dönüşüm PHP'nin GD eklentisiyle yapılıyor. AVIF için GD'nin AVIF desteğiyle derlenmiş olması (PHP 8.1 ve üstünde imageavif fonksiyonu) gerekiyor. Sunucuda AVIF desteği yoksa WebP birincil format oluyor. GD hiç yoksa görsel orijinal formatında saklanıyor ve site çalışmaya devam ediyor.
Tarayıcı Doğru Formatı Nasıl Seçiyor
Temalar görseli bir <picture> etiketiyle basıyor. Önce AVIF, sonra WebP kaynağı geliyor ve tarayıcı desteklediği ilk formatı seçiyor:
<picture>
<source srcset="/uploads/images/2026/03/foto.avif" type="image/avif">
<source srcset="/uploads/images/2026/03/foto.webp" type="image/webp">
<img src="/uploads/images/2026/03/foto.webp" alt="Açıklama"
width="800" height="500" loading="lazy">
</picture>
Karar tamamen tarayıcıda veriliyor; sunucu Accept başlığına bakıp farklı dosya göndermiyor. Bu yüzden Accept başlığını iletmeyen CDN'lerle de sorun çıkmıyor. Kendi temanızda get_featured_picture() bu etiketi srcset'leriyle birlikte hazır üretiyor; yalnızca adres gerekiyorsa get_featured_image($post, 'medium') kullanılıyor.
Saydam ve Hareketli Görseller
Saydam PNG'ler dönüşümde saydamlıklarını koruyor; logolar ve ikonlar AVIF ve WebP'de de saydam kalıyor.
GIF dosyaları da AVIF ve WebP'ye çevriliyor. GD yalnızca ilk kareyi okuduğu için hareketli bir GIF dönüşümden sonra durağan bir görsele dönüşüyor. Sayfada hareketli içerik göstermek istiyorsanız kısa bir video kullanmak daha iyi sonuç veriyor; hem animasyon korunuyor hem de dosya çok daha küçük oluyor.
Eski Görselleri Dönüştürmek
Media sınıfındaki batchConvert() fonksiyonu, henüz AVIF ve WebP sürümü olmayan görselleri 50'lik gruplar hâlinde dönüştürüyor. AVIF desteği gelmeden önce yüklenmiş bir kütüphaneyi tek seferde güncellemek için bunu kullanabilirsiniz. Bu iş için panelde ayrı bir ekran yok; fonksiyonu bir betikten çağırmak gerekiyor.