Tutorial Python kali ini saya akan memberikan contoh script yang saya buat belakangan ini untuk me-resize gambar. Karena gambar saya mencapai ratusan ribu dan dalam multiple folder , maka saya menulis script ini sesuai kebutuhan itu dan tentunya di tulis di Python dan bisa dijalankan di Terminal Ubuntu agar eksekusi nya sangat cepat.
Tutorial ini saya tulis juga di dzone (http://dzone.com/snippets/resize-thousands-images-python) 5 menit sebelum tutorial disini saya tulis :D dan sekarang di popular snippets
Misal kita punya gambar dalam struktur folder seperti ini:
images
---- Tigers
-------------1_tigers.jpg
-------------2_tigers.jpg
-------------2_tigers.png
-------------n_tigers.jpg
---- Cats
-------------1_cats.jpg
-------------2_tcats.jpg
-------------2_cats.png
-------------n_cats.jpg
---- n
-------------1_n.jpg
-------------2_n.jpg
-------------3_n.png
-------------n_n.jpg
.............................
ans so on.
Script nya
import PIL
from PIL import Image
import os
import sys
def readf():
try:
input_dir = str(sys.argv[1].rstrip('/')) #path to img source folder
img_size = str(sys.argv[2]) #The image size (128, 256,etc)
output_dir = str(sys.argv[3].rstrip('/')) #output directory
print "starting...."
print "Colecting data from %s " % input_dir
tclass = [ d for d in os.listdir( input_dir ) ]
counter = 0
strdc = ''
hasil = []
for x in tclass:
list_dir = os.path.join(input_dir, x )
list_tuj = os.path.join(output_dir+'/', x+'/')
if not os.path.exists(list_tuj):
os.makedirs(list_tuj)
if os.path.exists(list_tuj):
for d in os.listdir(list_dir):
try:
img = Image.open(os.path.join(input_dir+'/'+x,d))
img = img.resize((int(img_size),int(img_size)),Image.ANTIALIAS)
fname,extension = os.path.splitext(d)
newfile = fname+extension
if extension != ".jpg" :
newfile = fname + ".jpg"
img.save(os.path.join(output_dir+'/'+x,newfile),"JPEG",quality=90)
print "Resizing file : %s - %s " % (x,d)
except Exception,e:
print "Error resize file : %s - %s " % (x,d)
sys.exit(1)
counter +=1
except Exception,e:
print "Error, check Input directory etc : ", e
sys.exit(1)
#run it
if __name__ == '__main__':
readf()
Jalankancript sebagai berikut :
1. Buka terminal, lalu ketik command dibawah ini
2. python resizer.py {img source folder} {ukuran gambar} {folder tujuan}
example :
python resizer.py /home/ubuntu/images/ 128 /home/ubuntu/new_images
3. Saat nya santai + minum kopi dan liat proses nya di terminal
Notes:
1. Install PIL image kalo belum ada
2. ANTIALIAS and quality=90 adalah agar gambar tidak kehilangan kualitas
3. Images akan di ubah ke format .jpg extension ( kita bisa ubah ini sesuai keinginan)