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)