суббота, 12 мая 2012 г.

ReSize fotos in folder в 10 потоков

#coding: UTF-8
import threading, Queue, os
from PIL import Image

queue = Queue.Queue() # создаем очередь 
THREADS = 10

for i in os.listdir('.'):
    if i.split('.')[-1] == 'JPG':
        queue.put(Image.open(i))

def chage_file(img):
    #узнать ориентацию файла
    print 'Открытие файла ' + img.filename
    i_size = img.size
    if i_size[0] > i_size[1]: # если больше то 800х600
        #изменить размер
        r_img = img.resize((800,600), Image.ANTIALIAS)
    else:
        r_img = img.resize((600,800), Image.ANTIALIAS)
        #переименовать и сохранить
    print 'Сохранение файла' + img.filename
    r_img.save('NEW_'+img.filename)

def repeat():  
    while True:  
        try:  
            item = queue.get_nowait() # ждём данные  
        except Queue.Empty:  
            break  
        chage_file(item) # передаем данные в нашу функцию  
        #time.sleep(0.5)  
        queue.task_done() # задача завершена  

for tr in xrange(THREADS):
    t = threading.Thread(target=repeat) # создаем нить
    t.start()

queue.join()

Комментариев нет:

Отправить комментарий