lobe-chat icon indicating copy to clipboard operation
lobe-chat copied to clipboard

[Request] 增加 gemini 和 vertex 中 Imagen(文生图)模型

Open lowspace opened this issue 1 week ago • 3 comments

🥰 Feature Description

imagen-3 的介绍:https://deepmind.google/technologies/imagen-3/

🧐 Proposed Solution

官方实现:

  • https://github.com/google-gemini/cookbook/blob/main/quickstarts/Get_started_imagen.ipynb
  • https://ai.google.dev/gemini-api/docs/imagen#generate-images

代码参考:

from google import genai
from google.genai import types
from PIL import Image
from io import BytesIO
import base64
from datetime import datetime
from IPython.display import display, Image as IPImage

client = genai.Client(api_key=api_key)

MODEL_ID = "imagen-3.0-generate-002"
prompt = "A cat lounging lazily on a sunny windowstill playing with a kid toy." # @param {type:"string"}
number_of_images = 4 # @param {type:"slider", min:1, max:4, step:1}
person_generation = "ALLOW_ADULT" # @param ['DONT_ALLOW', 'ALLOW_ADULT']
aspect_ratio = "1:1" # @param ["1:1", "3:4", "4:3", "16:9", "9:16"]

response = client.models.generate_images(
    model=MODEL_ID,
    prompt=prompt,
    config=dict(
        number_of_images=number_of_images,
        output_mime_type="image/jpeg",
        person_generation=person_generation,
        aspect_ratio=aspect_ratio
    )
)

# Save and display each generated image
for i, generated_image in enumerate(response.generated_images):
    # Decode the Base64-encoded image data
    image_data = base64.b64decode(generated_image.image.image_bytes)
    
    # Generate a timestamp
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")  # Format: YYYYMMDD_HHMMSS
    
    # Create a filename with timestamp
    filename = f"generated_image_{timestamp}_{i + 1}.jpg"
    
    # Save the image to a file
    with open(filename, "wb") as f:
        f.write(image_data)
    
    print(f"Saved: {filename}")
    
    # Display the image in Jupyter Notebook
    display(IPImage(image_data))

📝 Additional Information

No response

lowspace avatar Feb 21 '25 21:02 lowspace