from ASCII_functions import generate_ascii_art import gradio as gr import tempfile def save_ascii_art(ascii_art): # Create a temporary file to save the ASCII art with tempfile.NamedTemporaryFile(delete=False, suffix=".txt") as tmp_file: tmp_file.write(ascii_art.encode('utf-8')) tmp_file_path = tmp_file.name return tmp_file_path css = """ #ascii_art_box textarea { font-family: 'Courier New', Courier, monospace; } """ # List of example images examples = [ ["simple_image1.png"], ["simple_image2.png"], ["person.png"] ] with gr.Blocks(css=css) as demo: with gr.Row(): input_image = gr.Image(type="pil", label="Input Image", scale=1) with gr.Row(): generate_button = gr.Button("Generate ASCII Art", scale=1) with gr.Row(): ascii_art = gr.Textbox(label="ASCII Art", placeholder=None, interactive=True, lines=50, scale=2, elem_id="ascii_art_box") with gr.Row(): save_button = gr.Button("Save ASCII Art") download_link = gr.File(label="Download ASCII Art") generate_button.click(fn=generate_ascii_art, inputs=[input_image], outputs=ascii_art) save_button.click(fn=save_ascii_art, inputs=ascii_art, outputs=download_link) # Adding examples gr.Examples(examples=examples, inputs=input_image) demo.launch(share=True)