Python – Dizin İçerisindeki Görsellerin Boyutlarını Küçültme

Bir önceki yazımda bir dizin içerisindeki dosyaların isimlerinin nasıl değiştirileceğini anlatan bir Python script’i paylaşmıştım. Bu yazımda ise bir dizin içerisindeki görsel boyutlarının nasıl küçültüleceğini hakkındaki script’imi (python image resize) paylaşacağım.

Görsel küçültme işlemi için yararlandığım kaynak: https://www.techtrekking.com/how-to-compress-images-using-python/

Şimdi ise bu işlemi bir dizin içerisindeki tüm dosyalar üzerinde nasıl gerçekleştireceğimize bakalım. İlk olarak Python Image Library olarak da bilinen PIL (Pillow) paketini pip ile sisteminize dahil etmeniz gerekiyor.

pip install Pillow

Eğer Python 2.x ve 3.x versiyonlarını aynı sistemde kullanıyorsanız bu işlemi yaparken pip3 kullanmanız gerekebilir.

Yukarıdaki script içerisinde ‘path’ değişkeni ile script’i çalıştıracağımız dizinin adresini alıyoruz ve bu ana dizin yolumuz oluyor. ‘extensions’ değişkeni ise bir liste halinde bu script’ten etkilenmesini istediğiniz dosya türlerini içerisinde tutuyor.

‘files’ değişkeni sayesinde sizin ‘path’ değişkeni altındaki belirttiğiniz tüm klasörlerin içerisine tek tek girerek yine sizin ‘extensions’ listesi içerisinde belirttiğiniz tüm dosyalara erişebilir hale geliyoruz.

Ardından ‘files’ içerisindeki tüm dosyaları tek tek gezerek boyut küçültme işlemini yapıyoruz. Bu işlem için öncelikle resmi seçiyoruz ve seçtiğimiz resmi belirtmiş olduğumuz ‘quality’ ve ‘optimize’ parametreleri ile tekrar kaydetme işlemi yapıyoruz.

Script’i çalıştırdıktan sonra dizin içerisinde yer alan dosyalarınızın boyutlarını arasındaki farkı komut satırın üzerinden görebilirsiniz.

Python – Dizindeki Dosya İsimlerini Topluca Değiştirme

Python dili ve kullanım alanları hakkında bilgi sahibi değilseniz araştırarak ne kadar kuvvetli bir dil olduğunu öğrenebilirsiniz. Şu an çalıştığım yerde Raspberry Pi üzerinden GPIO işlemleri yapmak için, hem masaüstü hem de Raspberry Pi ekranı için görsel arayüzler tasarlamak için ve de bazı hayatınızı kolaylaştırabilecek kod blokları yazarak iş yükünüzü çok kolay bir şekilde azaltabilmenize fayda sağlıyor.

Üzerinde çalıştığımız bir projede içerisinde neredeyse 2.000 JPG, PNG ve PDF dosyası olan bir klasör vardı ve bizden ilk aşama için istenilen şey bu görsellerin hepsinin ismindeki boşlukların “-” ile değiştirilmesi, tüm Türkçe karakterlerin Unicode karakterlere dönüştürülmesi ve tüm görsel adının küçük harf olmasıydı. Belki 20-30 dosya için bu işlemi el ile yapmak daha kolay bir yol olabilir ancak söz konusu 2.000 dosya ise bu iş çok farklı boyutlara gidiyor demektir. Bu işlem için bir Python script’i yazarak tüm işlemi tek bir komut ile yapabileceğimi düşündüm ve aşağıda gördüğünüz script’i yazdım.

Burada yaptığımız şey “path” değişkeni ile script’in bulunduğu klasörün yolunu alıyoruz ve ardından bu yolunda altındaki – tüm alt klasörler de dahil olmak üzere – tüm PDF dosyalarını bir listeye atıyoruz.

Ardından “rename()” fonksiyonu içerisinde “replace” fonksiyonu ile tüm boşlukları “-” ile değiştiriyoruz ve sonra “lower” fonksiyonu ile tüm karakterleri küçültükten sonra “translate” fonksiyonu sayesinde bir üst satırda oluşturmuş olduğumuz “translationTable” içerisinde belirttiğimiz karakterlerin değişimini yapıyoruz.

Eğer PDF değil de JPG veya PNG dosyalarına – veya istediğiniz herhangi bir farklı dosya tipi için – aynı işlemi uygulamak istiyorsanız “files” listesini oluşturduğumuz satır içerisindeki “.pdf” uzantısını istediğiniz uzantı ile değiştirmeniz yeterli olacaktır.

Bu işlem sayesinde belki 1 günden fazla sürecek bir işlemi yarım saatlik araştırmanın ardından yaklaşık 4 saniyede tamamlamış olduk. Bu şekilde kullandığım birkaç script daha mevcut. Önümüzdeki dönemlerde hepsini tek tek paylaşıyor olacağım.