Files
scripts/image/split_image.py
2024-12-02 19:38:23 +03:00

47 lines
2.3 KiB
Python

import os
import argparse
from PIL import Image
def split_image(image_path, output_folder, part_width, part_height):
# Открываем изображение
img = Image.open(image_path)
img_width, img_height = img.size
# Вычисляем количество частей по ширине и высоте
num_parts_x = img_width // part_width
num_parts_y = img_height // part_height
# Создаем выходную папку, если её нет
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for i in range(num_parts_x):
for j in range(num_parts_y):
# Вычисляем координаты для обрезки
left = i * part_width
upper = j * part_height
right = left + part_width if i < num_parts_x - 1 else img_width # Последняя часть берёт остаток
lower = upper + part_height if j < num_parts_y - 1 else img_height # Последняя часть берёт остаток
box = (left, upper, right, lower)
# Обрезаем изображение
part = img.crop(box)
# Сохраняем обрезанное изображение
part.save(os.path.join(output_folder, f'part_{i + 1}_{j + 1}.png'))
print(f'Изображение успешно разрезано на части размером {part_width}x{part_height} и сохранено в "{output_folder}".')
if __name__ == "__main__":
# Настраиваем парсер аргументов
parser = argparse.ArgumentParser(description='Разрезать изображение на части заданного размера.')
parser.add_argument('image_path', type=str, help='Путь к изображению PNG')
parser.add_argument('output_folder', type=str, help='Путь к папке для сохранения частей')
parser.add_argument('part_width', type=int, help='Ширина каждой части')
parser.add_argument('part_height', type=int, help='Высота каждой части')
# Парсим аргументы
args = parser.parse_args()
# Вызываем функцию разрезания изображения
split_image(args.image_path, args.output_folder, args.part_width, args.part_height)