import gradio as gr from PIL import Image import json def extract_metadata(image): if image is None: return "画像が選択されていません。" try: img = Image.open(image) metadata = img.info # PillowはPNG Infoなどをここに保持 if not metadata: return "メタデータが見つかりませんでした。" return json.dumps(metadata, indent=2, ensure_ascii=False) except Exception as e: return f"エラー: {str(e)}" with gr.Blocks() as demo: gr.Markdown("## Stable Diffusion画像からプロンプト情報抽出") with gr.Row(): with gr.Column(): input_image = gr.Image(type="filepath", label="画像をアップロード") extract_button = gr.Button("プロンプトを抽出") with gr.Column(): output_text = gr.Textbox(label="抽出結果", lines=20) extract_button.click(fn=extract_metadata, inputs=input_image, outputs=output_text) if __name__ == "__main__": demo.launch()