bluenevus commited on
Commit
4ccafa7
·
verified ·
1 Parent(s): b327f9a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -21
app.py CHANGED
@@ -1,7 +1,7 @@
1
  import gradio as gr
2
  import google.generativeai as genai
3
  from PIL import Image
4
- from io import BytesIO
5
  import base64
6
 
7
  # List of popular styles
@@ -19,41 +19,42 @@ extra limbs, disfigured, deformed, body out of frame, bad anatomy, watermark, si
19
  cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face
20
  """
21
 
22
- def enhance_prompt(model, prompt, style):
 
23
  enhanced_prompt_request = f"Enhance the following prompt for image generation in the style of {style}. Make it more detailed and vivid, while keeping the original intent: '{prompt}'"
24
 
25
  response = model.generate_content(enhanced_prompt_request)
26
 
27
  return response.text
28
 
29
- def generate_image(model, enhanced_prompt, style, negative_prompt):
 
30
  full_prompt = f"{enhanced_prompt}\nStyle: {style}\nNegative prompt: {negative_prompt}"
31
 
32
- response = model.generate_content([full_prompt, "generate an image"])
 
 
 
33
 
34
- if response.parts[0].image:
35
- image_bytes = response.parts[0].image.to_bytes()
36
- image = Image.open(BytesIO(image_bytes))
37
-
38
- # Convert PIL Image to base64 string
39
- buffered = BytesIO()
40
- image.save(buffered, format="PNG")
41
- img_str = base64.b64encode(buffered.getvalue()).decode()
42
-
43
- return f"data:image/png;base64,{img_str}"
44
- else:
45
- return None
46
 
47
  def process_and_generate(api_key, prompt, style, negative_prompt):
48
  genai.configure(api_key=api_key)
49
- text_model = genai.GenerativeModel('gemini-2.0-flash-lite')
50
- image_model = genai.GenerativeModel('imagen-3.0-generate-002')
51
- enhanced_prompt = enhance_prompt(text_model, prompt, style)
52
- image_url = generate_image(image_model, enhanced_prompt, style, negative_prompt)
53
  return image_url, enhanced_prompt
54
 
55
  with gr.Blocks() as demo:
56
- gr.Markdown("# Google Gemini Image Generator")
57
 
58
  with gr.Row():
59
  with gr.Column(scale=1):
 
1
  import gradio as gr
2
  import google.generativeai as genai
3
  from PIL import Image
4
+ import io
5
  import base64
6
 
7
  # List of popular styles
 
19
  cut off, low contrast, underexposed, overexposed, bad art, beginner, amateur, distorted face
20
  """
21
 
22
+ def enhance_prompt(prompt, style):
23
+ model = genai.GenerativeModel("gemini-2.0-flash-lite")
24
  enhanced_prompt_request = f"Enhance the following prompt for image generation in the style of {style}. Make it more detailed and vivid, while keeping the original intent: '{prompt}'"
25
 
26
  response = model.generate_content(enhanced_prompt_request)
27
 
28
  return response.text
29
 
30
+ def generate_image(enhanced_prompt, style, negative_prompt):
31
+ model = genai.GenerativeModel("imagen-3.0-generate-002")
32
  full_prompt = f"{enhanced_prompt}\nStyle: {style}\nNegative prompt: {negative_prompt}"
33
 
34
+ response = model.generate_images(
35
+ prompt=full_prompt,
36
+ number_of_images=1,
37
+ )
38
 
39
+ image_bytes = response.images[0].image_bytes
40
+ image = Image.open(io.BytesIO(image_bytes))
41
+
42
+ # Convert PIL Image to base64 string
43
+ buffered = io.BytesIO()
44
+ image.save(buffered, format="PNG")
45
+ img_str = base64.b64encode(buffered.getvalue()).decode()
46
+
47
+ return f"data:image/png;base64,{img_str}"
 
 
 
48
 
49
  def process_and_generate(api_key, prompt, style, negative_prompt):
50
  genai.configure(api_key=api_key)
51
+
52
+ enhanced_prompt = enhance_prompt(prompt, style)
53
+ image_url = generate_image(enhanced_prompt, style, negative_prompt)
 
54
  return image_url, enhanced_prompt
55
 
56
  with gr.Blocks() as demo:
57
+ gr.Markdown("# Google Imagen 3 Image Generator")
58
 
59
  with gr.Row():
60
  with gr.Column(scale=1):