Added a script to split the image into several parts.
This commit is contained in:
26
readme.md
26
readme.md
@@ -1,9 +1,11 @@
|
||||
# Скрипты
|
||||
|
||||
В этой директории находятся полезные для проекта скрипты позволяющие автоматизировать процесс разработки.
|
||||
|
||||
## Создать картинку из массива байт
|
||||
|
||||
Скрипт принимает 3 обязательных аргумента:
|
||||
|
||||
- Путь к текстовому документу в котором находиться перечисление байтов
|
||||
- Ширина выходной изображения
|
||||
- Длина выходного изображения
|
||||
@@ -19,10 +21,22 @@
|
||||
## Создать карту изображений из директории в формате Excel файла
|
||||
|
||||
Скрипт принимает 2 обязательных параметра:
|
||||
- Путь к целевому каталогу с изображениями
|
||||
- Путь к выходному файлу в формате *.xlsx или *.xls в котором будут находиться:
|
||||
- Название изображения
|
||||
- Размер изображения
|
||||
- Эскиз изображения
|
||||
|
||||
Работает на текущий момент с популярными форматами: `'.png', '.jpg', '.jpeg', '.gif', '.bmp'`.
|
||||
- Путь к целевому каталогу с изображениями
|
||||
- Путь к выходному файлу в формате *.xlsx или*.xls в котором будут находиться:
|
||||
- Название изображения
|
||||
- Размер изображения
|
||||
- Эскиз изображения
|
||||
|
||||
Работает на текущий момент с популярными форматами: `'.png', '.jpg', '.jpeg', '.gif', '.bmp'`.
|
||||
|
||||
## Разделить картинку на части
|
||||
|
||||
Скрипт `split_image.py` позволяет легко разделить изображение на части одинаковой ширины и длины в формате `.png`.
|
||||
|
||||
Принимает 4 аргумента:
|
||||
|
||||
- Путь к исходному изображению в формате `.png`
|
||||
- Путь к каталогу, в котором будут размещены фрагменты `.png`
|
||||
- Ширина
|
||||
- Длина
|
||||
|
||||
47
split_image.py
Normal file
47
split_image.py
Normal file
@@ -0,0 +1,47 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user