| import gradio as gr |
| import base64 |
| import io |
| from PIL import Image |
| from together import Together |
|
|
| def generate_image(api_key, prompt, width, height, steps): |
| try: |
| |
| client = Together(api_key=api_key) |
| |
| |
| response = client.images.generate( |
| prompt=prompt, |
| model="black-forest-labs/FLUX.1-schnell-Free", |
| width=width, |
| height=height, |
| steps=steps, |
| n=1, |
| response_format="b64_json" |
| ) |
| |
| |
| image_b64 = response.data[0].b64_json |
| |
| |
| image_data = base64.b64decode(image_b64) |
| image = Image.open(io.BytesIO(image_data)) |
| |
| return image |
| except Exception as e: |
| return f"Error generating image: {str(e)}" |
|
|
| |
| with gr.Blocks() as app: |
| gr.Markdown("# Together AI Image Generator") |
| gr.Markdown("Generate images using the FLUX.1-schnell-Free model from Together AI") |
| |
| with gr.Row(): |
| with gr.Column(scale=1): |
| api_key_input = gr.Textbox( |
| label="Together API Key", |
| placeholder="Enter your Together API key here...", |
| type="password" |
| ) |
| prompt_input = gr.Textbox( |
| label="Enter your prompt", |
| placeholder="A beautiful sunset over mountains...", |
| lines=3 |
| ) |
| |
| with gr.Row(): |
| width_input = gr.Number( |
| label="Width", |
| value=1024, |
| minimum=256, |
| maximum=2048, |
| step=64 |
| ) |
| height_input = gr.Number( |
| label="Height", |
| value=768, |
| minimum=256, |
| maximum=2048, |
| step=64 |
| ) |
| steps_input = gr.Slider( |
| label="Steps", |
| minimum=1, |
| maximum=50, |
| value=4, |
| step=1 |
| ) |
| |
| generate_button = gr.Button("Generate Image") |
| |
| with gr.Column(scale=1): |
| image_output = gr.Image(label="Generated Image") |
| |
| generate_button.click( |
| fn=generate_image, |
| inputs=[api_key_input, prompt_input, width_input, height_input, steps_input], |
| outputs=image_output |
| ) |
| |
| gr.Markdown(""" |
| ## Instructions |
| 1. Enter your Together API Key (get one from https://www.together.ai) |
| 2. Enter a descriptive prompt in the text box |
| 3. Adjust the width, height, and steps as needed |
| - Width and height control the dimensions of the generated image |
| - Steps control the number of diffusion steps (higher = more detail but slower) |
| 4. Click "Generate Image" |
| 5. Wait for the image to be generated |
| |
| Note: Your API key is not stored and is only used for the current session. |
| """) |
|
|
| |
| if __name__ == "__main__": |
| app.launch() |