Вращение изображений - PullRequest
0 голосов
/ 29 мая 2019

Мне нужно повернуть изображение на 90, 180 и 270 градусов.Мне не нужно копировать изображение, а сохранить повернутое изображение как отдельное изображение.Пока что мой код будет вращать изображение, но не будет сохранять его как отдельный файл.Это то, что я имею до сих пор.

import os
import glob
from PIL import Image
os.chdir("./")
for file in glob.glob("*.jpg"):
    image = Image.open(file)
    image_rot_180 = image.rotate(180)
    image_rot_180.save(file.replace(".jpg", "_r180.jpg"))

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Ваш точный код работает как есть: данное изображение original.jpg, оно переворачивается (поворачивается на 180 градусов) и сохраняет его как original_r180.jpg. os.chdir является посторонним, поскольку переход на текущий каталог является пустым, но это не так.

Если вам нужно сделать все три, учтите это:

import glob
from PIL import Image
os.chdir("./")
for file in glob.glob("*.jpg"):
    for angle in (90, 180, 270):
        image = Image.open(file)
        image_rot = image.rotate(angle)
        image_rot.save(file.replace(".jpg", "_r{0}.jpg".format(angle)))
0 голосов
/ 29 мая 2019

Ваш код работает (я проверял). Вот улучшенная версия, которая поворачивает каждое изображение на 3 упомянутых угла и сохраняет его.

code.py

#!/usr/bin/env python3

import sys
import os
import glob
from PIL import Image


def main():
    img_dir = "./img"
    jpg_ext = ".jpg"
    angles = [90, 180, 270]
    for file_name in glob.iglob(os.path.join(img_dir, "*" + jpg_ext)):
        image = Image.open(file_name)
        for angle in angles:
            rot_suffix = "_r{:03d}{:s}".format(angle, jpg_ext)
            file_name_rot = file_name.replace(jpg_ext, rot_suffix)
            image_rot = image.rotate(angle)
            image_rot.save(file_name_rot)
            print("Rotated: {:s} by {:3d} degrees to {:s}".format(file_name, angle, file_name_rot))


if __name__ == "__main__":
    print("Python {:s} on {:s}\n".format(sys.version, sys.platform))
    main()
    print("\nDone.")

выход

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q056368107]> dir /b .\img
image.jpg
script_file.py

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q056368107]> "e:\Work\Dev\VEnvs\py_064_03.07.03_test0\Scripts\python.exe" code.py
Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)] on win32

Rotated: ./img\image.jpg by  90 degrees to ./img\image_r090.jpg
Rotated: ./img\image.jpg by 180 degrees to ./img\image_r180.jpg
Rotated: ./img\image.jpg by 270 degrees to ./img\image_r270.jpg

Done.

[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q056368107]> dir /b .\img
image.jpg
image_r090.jpg
image_r180.jpg
image_r270.jpg
script_file.py

Для получения более подробной информации об операциях, выполняемых со строками, проверьте [Python 3.Docs]: Форматировать синтаксис строки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...