İçeriğe geç
Muslu Yüksektepe

pil_otomatik_resim_boyutlandirma

Bir klasördeki resimleri PIL ile küçültüp ortak bir arka plana yerleştirerek hepsini aynı boyuta getiren betik.

pil_otomatik_resim_boyutlandirma, bir klasördeki resimleri oranlarını bozmadan küçültüp hepsini aynı boyuttaki beyaz bir arka planın ortasına yerleştiren kısa bir Python betiği. Sonuçta farklı boyut ve oranlardaki bütün resimler aynı ölçüde bir PNG dosyasına dönüşüyor. 2017 yılının Ocak ayında Python'un PIL kütüphanesiyle yazdım.

Amaç

Bir web sayfasında logo ya da ürün görseli gibi resimleri ızgara düzeninde göstermek gerektiğinde, resimlerin her biri farklı genişlik ve yükseklikte olunca sayfa dağınık görünüyor. Resimleri doğrudan aynı boyuta zorlamak ise onları basık ya da uzamış hâle getiriyor. Bu betiği, resimleri bozmadan aynı çerçeveye oturtmak ve bu işi tek tek elle yapmak yerine bütün klasör için bir kerede halletmek amacıyla yazdım.

Nasıl çalışır

Betik önce belirtilen klasördeki dosyaları listeliyor ve yalnızca istenen uzantılara sahip olanları, varsayılan olarak jpg, jpeg ve png dosyalarını alıyor. Her resim için üç adım uyguluyor.

İlk adımda resmi PIL ile açıp thumbnail yöntemiyle en fazla 360 x 360 piksel olacak şekilde küçültüyor. Bu yöntem resmin en boy oranını koruyor ve zaten bu boyuttan küçük olan resimleri büyütmüyor. Küçültülen resim thumb klasörüne PNG olarak kaydediliyor.

İkinci adımda 360 x 360 piksel boyutunda, beyaz renkli ve saydamlık kanalı olan boş bir resim oluşturuyor.

Üçüncü adımda küçültülmüş resmin son genişliğini ve yüksekliğini alıp arka planın ortasına denk gelecek şekilde soldan ve yukarıdan ne kadar boşluk bırakılacağını hesaplıyor. Resmi bu konuma yapıştırıp sonucu son klasörüne PNG olarak kaydediyor.

Öne çıkan özellikler

  • Resimlerin en boy oranı korunduğu için hiçbir görsel basık ya da uzamış görünmüyor.
  • Küçük resimler büyütülmediği için bulanıklaşmıyor, yalnızca ortalanıyor.
  • Bütün çıktılar aynı boyutta olduğu için sayfada düzgün bir ızgara oluşuyor.
  • Hedef boyut, arka plan boyutu ve işlenecek uzantılar betiğin başındaki değişkenlerden kolayca değiştirilebiliyor.

Teknik altyapı

Betik Python 2 ile yazıldı ve resim işlemleri için PIL kütüphanesini kullanıyor. Dosya listesi os modülüyle alınıyor. README dosyasında her satırın ne yaptığı Türkçe yorumlarla tek tek açıklanıyor. Depoda betiğin yanında örnek giriş resimleri ve thumb ile son klasörlerinde bunların işlenmiş hâlleri de bulunuyor.

Durum

Betik 2017'den bu yana güncellenmedi. Python 2 sözdizimiyle yazıldığı ve PIL'in o dönemki ANTIALIAS sabitini kullandığı için bugün Pillow ve Python 3 ile çalıştırmak küçük düzeltmeler gerektiriyor. Ayrıca işlenecek klasörün yolu kodun içinde sabit olarak yazılı.

Kullanım alanları

  • Bir sitenin referanslar ya da ürünler bölümündeki logoları ve görselleri aynı boyuta getirmek için kullanılabilir.
  • E-ticaret sitelerinde farklı kaynaklardan gelen ürün fotoğraflarını tek tip kare görsellere dönüştürmek için işe yarar.
  • PIL ile resim küçültme, yeni resim oluşturma ve resimleri üst üste koyma işlemlerini öğrenmek isteyenler için açıklamalı bir örnek sunuyor.
Kategori
Python kütüphaneleri
Yıl
2017

Teknolojiler

  • Python
  • PIL
  • Image Processing

Bağlantılar

  • GitHub https://github.com/muslu/pil_otomatik_resim_boyutlandirma

Tüm projelere dön