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)