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 обязательных аргумента:
|
Скрипт принимает 3 обязательных аргумента:
|
||||||
|
|
||||||
- Путь к текстовому документу в котором находиться перечисление байтов
|
- Путь к текстовому документу в котором находиться перечисление байтов
|
||||||
- Ширина выходной изображения
|
- Ширина выходной изображения
|
||||||
- Длина выходного изображения
|
- Длина выходного изображения
|
||||||
@@ -19,10 +21,22 @@
|
|||||||
## Создать карту изображений из директории в формате Excel файла
|
## Создать карту изображений из директории в формате Excel файла
|
||||||
|
|
||||||
Скрипт принимает 2 обязательных параметра:
|
Скрипт принимает 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