Teknoloji ve Yazılım

Python ile görselleri topluca WebP’ye dönüştürme: boyut, kalite ve yön kontrolü

Pillow ile JPEG ve PNG görsellerinden ayrı WebP kopyaları üretin; yönü düzeltin, ölçüyü sınırlayın ve sonucu kontrol edin.

Python ile görselleri topluca WebP’ye dönüştürme: boyut, kalite ve yön kontrolü — Kaynağı ayır, Yönü ve boyutu düzenle, WebP kopyası üret, Görseli karşılaştır
Bu rehber için hazırlanan özgün açıklayıcı şema; uygulama ekran görüntüsü değildir.
GÖRSEL ANLATIM

Python ile görselleri topluca WebP’ye dönüştürme — uygulama akışı

1

Kaynağı ayır

JPEG ve PNG kopyalarını girdi klasörüne al.

2

Yönü ve boyutu düzenle

Telefon yönünü uygula, uzun kenarı sınırla.

3

WebP kopyası üret

Kaynağın üzerine yazmadan yeni dosya kaydet.

4

Görseli karşılaştır

Yazı, ürün kenarı, renk ve şeffaflığı incele.

Bu şema rehber için hazırlanmış özgün bir iş akışıdır; uygulama ekran görüntüsü değildir.

Kısa özet

Pillow ile JPEG ve PNG görsellerinden ayrı WebP kopyaları üretin; yönü düzeltin, ölçüyü sınırlayın ve sonucu kontrol edin.

Teknoloji ve Yazılım topluluğuna git

Bir blog için hazırlanan on beş kapak görselini tek tek dışa aktarmak yerine küçük bir dönüştürme betiği kullanılabilir. Buradaki hedef yalnızca dosya uzantısını değiştirmek değildir. Telefon fotoğrafının yönü, şeffaf kenarlar, uzun kenar ölçüsü ve aynı isimli dosyalar birlikte ele alınmalıdır. Örneği kendi bilgisayarınızdaki kopyalar üzerinde çalıştırın; özgün fotoğraflar kaynak klasörde kalır.

1. Önce yayın ölçüsünü belirleyin

Örnek senaryomuzda blog kartları ve makale kapakları için uzun kenarı en fazla 1600 piksel olan görseller hazırlıyoruz. Bu değer evrensel bir SEO kuralı değildir; bu proje için seçilmiş bir sınırdır. Sitenizde kapak 900 piksel görünüyorsa farklı ekran yoğunluklarını da düşünerek uygun bir çıktı belirleyin. Çok küçük fotoğrafı büyütmek eksik ayrıntıyı geri getirmez. Bu nedenle betik yalnızca küçültür.

2. Klasör ve kurulum hazırlığı

Python kurulu bir bilgisayarda boş bir çalışma klasörü açın. İçine girdi adında klasör ekleyip iki JPEG, bir şeffaf PNG ve bir dikey telefon fotoğrafı koyun. İlk denemeyi yüzlerce dosyayla yapmayın. Terminalde python -m pip install Pillow komutunu çalıştırın. Ardından aşağıdaki kodu webp_yap.py adıyla kaydedin. Python komutunuz python3 ise çalıştırma komutlarında aynı adı kullanın.

3. Dönüştürme kodu

python
from pathlib import Path
from PIL import Image, ImageOps

source = Path('girdi')
target = Path('webp-cikti')
target.mkdir(exist_ok=True)
if not source.is_dir():
    raise SystemExit('Önce girdi klasörünü oluşturun.')

for path in sorted(source.iterdir()):
    if path.suffix.lower() not in {'.jpg', '.jpeg', '.png'}:
        continue
    output = target / (path.name + '.webp')
    if output.exists():
        print('Atlandı, zaten var:', output.name)
        continue
    try:
        with Image.open(path) as original:
            image = ImageOps.exif_transpose(original)
            image.thumbnail((1600, 1600), Image.Resampling.LANCZOS)
            mode = 'RGBA' if 'A' in image.getbands() or 'transparency' in image.info else 'RGB'
            image = image.convert(mode)
            image.save(output, 'WEBP', quality=82, method=6,
                       icc_profile=original.info.get('icc_profile'))
            print(path.name, '->', output.name, image.size,
                  output.stat().st_size, 'bayt')
    except (OSError, ValueError) as error:
        print('İşlenemedi:', path.name, error)

4. Kodun önemli tercihleri

python webp_yap.py ile çalıştırın. Çıktı adında eski uzantıyı korumamız bilinçlidir: kapak.jpg ile kapak.png aynı klasördeyse birbirinin üzerine yazılmaz. Mevcut çıktının atlanması da yeniden çalıştırmayı daha kontrollü yapar. Ayar değiştirdiğinizde farklı bir çıktı klasörü seçin. quality=82 başlangıç denemesidir; ince yazılı bir ekran görüntüsü ile manzara fotoğrafı aynı ayarda aynı sonucu vermeyebilir.

Pillow belgeleri WebP kaydında kalite ve sıkıştırma çabasının ayrı seçenekler olduğunu açıklar. Yön düzeltmesi için ImageOps.exif_transpose kullanılır. Örneğimiz konum gibi EXIF alanlarını özellikle dışa aktarmıyor; renk profilini ise varsa geçiriyor. Renk doğruluğunun kritik olduğu kataloglarda çıktıyı orijinaliyle karşılaştırın.

5. Görsel karşılaştırmayı nasıl yapmalısınız?

Kaynak ve çıktıyı yüzde yüz yakınlaştırmayla yan yana açın. Yüz, ürünün kenarları, küçük yazılar ve yumuşak gölgeler üzerinden değerlendirin. Şeffaf logoyu hem açık hem koyu zeminde inceleyin; kenarda istenmeyen bir hale oluşup oluşmadığına bakın. Dosya küçüldü diye otomatik olarak iyi sonuç saymayın. Boyut kazancı düşükse girişin zaten iyi sıkıştırılmış olması mümkündür.

6. Sık görülen hatalar

No module named PIL mesajı, çalıştırdığınız Python ortamında Pillow bulunmadığını gösterir; kurulumu aynı python -m pip komutuyla yapın. Bir dosyanın açılmaması gerçek biçiminin uzantısıyla uyuşmamasından veya hasarlı olmasından kaynaklanabilir. HEIC dosyaları bu örneğin kapsamı dışındadır. Animasyonlu dosyalar da işlenmez; hareketli bir içeriği fark etmeden tek kareye indirmeyin. Girdi klasörüne çıktı klasörünü taşımak gibi döngüler kurmayın.

7. Yayın öncesi kontrol

En az bir yatay, bir dikey ve bir şeffaf dosyayı inceleyin. Görselleri siteye yüklediğinizde gerçek sayfadaki kırpmayı ayrıca kontrol edin. Dosya adını konuya göre anlamlı seçin; alternatif metni görselin gösterdiği şeyi anlatacak biçimde yazın. Bu betik alternatif metin veya sayfa yerleşimi üretmez. Kaynak dosyaları saklamak, daha sonra farklı boyutlarda yeniden dışa aktarmanızı kolaylaştırır. Aynı fotoğrafın farklı sayfalarda kullanıldığı durumlarda hangi çıktı ölçüsünün hangi alana ait olduğunu kısa bir yayın notuna yazın.

İlgili okumalar

Bu uygulamayı forumda tartışın.

Resmî kaynaklar ve devamı

#Python#Pillow#WebP#görsel optimizasyonu