Пакетный ресайз картинок.

Понадобилось уменьшить кучу png картинок. Тк начал осваивать Python, решил совместить приятное с полезным. Получилось следующее решение:

import os, Image
# Получаем полный список папок и картинок
def getsubs(dir):
    # get all
    dirs = []
    files = []
    for dirname, dirnames, filenames in os.walk(dir):
        dirs.append(dirname)
        for subdirname in dirnames:
            dirs.append(os.path.join(dirname, subdirname))
        for filename in filenames:
            files.append(os.path.join(dirname, filename))
    return dirs, files

files = getsubs('cgo')

# создаем копию структуры папок
for dir in files[0]:
    name = 'out/' + dir
    if not(os.path.exists(name)):
        os.mkdir(name)
    else:
        print name + ' exists'

# ресайзим png файлы.
for file in files[1]:
    if (file.split('.')[-1] == 'png'):
        image = Image.open(file)

        rsImage = image.resize((int(image.size[0]/4), int(image.size[1]/4)),)
        # Сохраняем dpi, если есть. 
        if 'dpi' in rsImage.info:
            rsImage.save('out/' + file, dpi=rsImage.info['dpi'])
        else:
            rsImage.save('out/' + file)
    else:
        print file + " not png"
blog comments powered by Disqus

Реклама и кнопки:

CMS Made Simple 1.9.2 CMS Made Simple - Сайт русской поддержки

Proud to useProud to use