изменение размера всех изображений в папке с помощью PIL - PullRequest
0 голосов
/ 09 марта 2019

Я могу изменить размер каждого изображения по одному, но как я могу изменить размер всех изображений в одной папке аналогичным образом?Пожалуйста, помогите мне.

from PIL import Image
from resizeimage import resizeimage
    with open('test-image.jpeg', 'r+b') as f:
        with Image.open(f) as image:
            cover = resizeimage.resize_cover(image, [200, 100])
            cover.save('test-image-cover.jpeg', image.format)

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

Обновлено: Теперь используется os.listdir() вместо glob.glob() из-за необходимости генерировать новые имена файлов из оригинала. Теперь код сохраняет изображения с измененным размером в той же папке с исходным файлом и добавленным суффиксом.

Обратите внимание, что Image.open() хочет, чтобы ему был передан путь к файлу, а не открытый файл.

import os
from PIL import Image
from resizeimage import resizeimage

img_folder = '/path/to/img_folder'
fileext = '.jpg'
suffix = '_RESIZED'

for img_filename in os.listdir(img_folder):
    filename, ext = os.path.splitext(img_filename)

    if ext == fileext:
        print(filename, ext)
        src_img_filepath = os.path.join(img_folder, img_filename)
        dst_img_filepath = os.path.join(img_folder, filename+suffix, ext)

        with Image.open(src_img_filepath) as image:
            cover = resizeimage.resize_cover(image, [200, 100])
            cover.save(dst_img_filepath, image.format)
0 голосов
/ 09 марта 2019

Просто переберите файлы в текущем каталоге

import os
from PIL import Image
from resizeimage import resizeimage

base = '/the/path'
for path in os.listdir(base):
    with Image.open(os.path.join(base, path)) as image:
        cover = resizeimage.resize_cover(image, [200, 100])
        cover.save(path, image.format)
...