Added a script for creating an image map in Excel format.
This commit is contained in:
68
make_excel_file.py
Normal file
68
make_excel_file.py
Normal 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)
|
||||
Reference in New Issue
Block a user