Added a script for creating an image map in Excel format.

This commit is contained in:
Egor Tsyganchuk
2024-11-29 18:51:35 +03:00
parent d73a2cd6ac
commit 5d291bd174

68
make_excel_file.py Normal file
View File

@@ -0,0 +1,68 @@
import os
import argparse
from openpyxl import Workbook
from openpyxl.drawing.image import Image
from PIL import Image as PILImage
from io import BytesIO
def create_excel_with_images(folder_path, output_excel):
# Создаем новый workbook
wb = Workbook()
ws = wb.active
ws.title = "Images"
# Заголовки столбцов
ws.append(["Filename", "Size (KB)", "Thumbnail"])
row_num = 2 # Начинаем с 2-й строки, т.к. первая - это заголовки
# Получаем список всех файлов в указанной папке
for filename in os.listdir(folder_path):
file_path = os.path.join(folder_path, filename)
# Проверяем, является ли файл изображением (по расширению)
if os.path.isfile(file_path) and filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')):
# Получаем размеры файла
file_size_kb = os.path.getsize(file_path) / 1024
# Получаем миниатюру изображения
img = PILImage.open(file_path)
img.thumbnail((100, 100)) # Сжимаем изображение до размера 100x100 пикселей
# Сохраняем миниатюру в память
img_byte_arr = BytesIO()
img.save(img_byte_arr, format="PNG")
img_byte_arr.seek(0)
# Вставляем данные в Excel
ws.append([filename, f"{file_size_kb:.2f}", ""]) # Добавляем название и размер
# Добавляем миниатюру
image = Image(img_byte_arr)
image.anchor = f"C{row_num}" # Указываем, куда вставить картинку
# Вставляем картинку
ws.add_image(image)
# Устанавливаем высоту строки в зависимости от размера изображения
image_height = img.height # Высота изображения в пикселях
ws.row_dimensions[row_num].height = image_height * 0.75 # Преобразуем пиксели в высоту строки Excel (1 пиксель ≈ 0.75)
row_num += 1 # Переходим к следующей строке
# Сохраняем Excel файл
wb.save(output_excel)
print(f"Excel файл сохранен: {output_excel}")
def parse_args():
parser = argparse.ArgumentParser(description="Создание Excel файла с картинками.")
parser.add_argument("folder_path", help="Путь к папке с изображениями")
parser.add_argument("output_excel", help="Путь для сохранения Excel файла")
return parser.parse_args()
if __name__ == "__main__":
# Получаем аргументы командной строки
args = parse_args()
# Вызываем функцию создания Excel
create_excel_with_images(args.folder_path, args.output_excel)