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)