Форум сайта python.su
Уважаемые гуру Питона, при работе с сайтом приходиться вручную подгонять размеры картинок под стандарт. К примеру - большая сторона 460 пикс. Меньшая естественно - по соотношению сторон оригинала. Хотелось бы автоматизировать этот процесс до одного клика, запуская скрипт в папке, где лежат джейпеги. Наслышан о PIL. Как проще реализовать перебор файлов в папке по маске *.jpg?
Заранее спасибо.
Офлайн
Студенты в свое врея сделали модуль для автоматичекого конвертирования формата. Он позволяет пакетно обрабатывать много фотографий: менять разрешение в пропорциях, наносить водяной знак, менять формат и еще много плюшек. Уже не помню. Но по маске - нужно будет самому.
Если вопрос только по маске, то можно:
import os list_files_jpg = [file_name for file_name in os.listdir("путь_к_папке_с_файлами") if file_name.endswith(".jpg")]
Отредактировано 4kpt (Июль 13, 2013 13:44:45)
Офлайн
спасибо, а как указать полный путь к файлу? Присоединить строку типа path+list_files_jpg[]?
Отредактировано Lion1971 (Июль 13, 2013 13:55:31)
Офлайн
Как Вы поняли, os.listdir возвращает список всех файлов по указанному пути.
Чтобы получить полный путь к одному из этих файлов, нужно
path_to_jpg_file = os.path.join("путь_переданный_в_listdir", "имя_файла_из_listdir")
Офлайн
а если скрипт выполняется в папке с рисунками, то есть путь - текущая папка?
Офлайн
вроде так os.listdir('.')
Офлайн
Лучше указывать явно :)
Офлайн
ну если мёд то уж ложкой
как сформировать новое имя файла для сохранения тип name_r.jpg
Офлайн
import os, Image, math list_files_jpg = [file_name for file_name in os.listdir('.') if file_name.endswith(".jpg")] for i in list_files_jpg: im=Image.open(i) factor=im.size[0]/460.0 f=int(math.ceil(im.size[1]/factor)) out=im.resize((460,f))
Офлайн
Зачем так сложно.
Есть метод thumbnail. Он автоматески определить пропорции :)
Для сохранения есть метод save(“полный_путь_для_нового_файла”)
Офлайн