Я думаю, что-то вроде того, что вы ищете:
import os
from PIL import Image
# Crops the image and saves it as "new_filename"
def crop_image(img, crop_area, new_filename):
cropped_image = img.crop(crop_area)
cropped_image.save(new_filename)
# The x, y coordinates of the areas to be cropped. (x1, y1, x2, y2)
crop_areas = [(180, 242, 330, 566), (340, 150, 900, 570)]
image_name = 'download.jpg'
img = Image.open(image_name)
# Loops through the "crop_areas" list and crops the image based on the coordinates in the list
for i, crop_area in enumerate(crop_areas):
filename = os.path.splitext(image_name)[0]
ext = os.path.splitext(image_name)[1]
new_filename = filename + '_cropped' + str(i) + ext
crop_image(img, crop_area, new_filename)
Программа работает, беря входное изображение (в данном случае download.jpg
), просматривая список координат (x1, y1, x2, y2)
, представляющих области обрезаемых изображений, а затем передает каждое изображение в функцию crop_image()
, которая принимает изображение, которое нужно обрезать, координаты и новое имя файла для изображения, которое будет сохранено как.
Полученные файлы сохраняются как download_cropped0.jpg
и download_cropped1.jpg
(в этом примере). Если вы хотите обрезать больше областей на изображении, вам нужно добавить больше кортежей в виде (x1, y1, x2, y2)
в список crop_areas
. Вы можете использовать такую программу, как рисование или фотошоп, чтобы получить координаты изображения, из которого вы хотите обрезать изображение.