""" Generate image files for each comic page at 800x1080 resolution Simple version that creates HTML canvases instead of actual image files """ import os import json from typing import List, Dict class PageImageGenerator: """Generate page images as HTML canvases that can be saved""" def __init__(self, output_dir: str = "output/page_images"): self.output_dir = output_dir self.page_size = (800, 1080) # Width x Height def generate_page_images(self, pages_data: List[Dict], frames_dir: str) -> List[str]: """Generate HTML pages that render as images""" os.makedirs(self.output_dir, exist_ok=True) generated_files = [] # Create individual HTML files for each page for i, page in enumerate(pages_data): filename = f"page_{i+1:03d}.html" filepath = os.path.join(self.output_dir, filename) self._create_page_html(page, frames_dir, i + 1, filepath) generated_files.append(filepath) print(f"📄 Generated page {i+1}/{len(pages_data)}: {filename}") # Create main gallery self._create_gallery_html(len(pages_data)) return generated_files def _create_page_html(self, page: Dict, frames_dir: str, page_num: int, output_path: str): """Create HTML that renders a comic page at 800x1080""" panels_html = "" panels = page.get('panels', []) for idx, panel in enumerate(panels[:4]): if panel.get('image'): img_path = f"../../frames/final/{panel['image']}" bubble_html = "" if panel.get('speech_bubble'): bubble = panel['speech_bubble'] bubble_html = f"""
All pages rendered at 800x1080 resolution
{num_pages} pages generated