الانتقال إلى المحتوى الرئيسي
يوضح هذا الدليل كيفية استخدام نماذج صور Gemini عبر CometAPI باستخدام Google Gen AI SDK. ويغطي ما يلي:
  • إنشاء الصور من النص
  • تحرير الصور من صورة إلى صورة
  • تركيب عدة صور
  • حفظ الصور المُنشأة
  • Base URL: https://api.cometapi.com
  • ثبّت الـ SDK: pip install google-genai (Python) أو npm install @google/genai (Node.js)

الإعداد

هيّئ العميل باستخدام عنوان URL الأساسي الخاص بـ CometAPI:
from google import genai
from google.genai import types
import os

COMETAPI_KEY = os.environ.get("COMETAPI_KEY") or "<YOUR_COMETAPI_KEY>"

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=COMETAPI_KEY,
)

توليد الصور من النص

أنشئ صورة من Prompt نصي واحفظها في ملف.
from google import genai
from google.genai import types
from PIL import Image
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents="Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme",
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = part.as_image()
        image.save("generated_image.png")
        print("Image saved to generated_image.png")
بنية الاستجابة: توجد بيانات الصورة في candidates[0].content.parts، والتي يمكن أن تحتوي على أجزاء نصية و/أو أجزاء صور:
{
  "candidates": [{
    "content": {
      "parts": [
        { "text": "Here is your image..." },
        {
          "inlineData": {
            "mimeType": "image/png",
            "data": "<base64-encoded-image>"
          }
        }
      ]
    }
  }]
}

توليد الصور من صورة إلى صورة

ارفع صورة إدخال وحوّلها باستخدام Prompt نصي.
from google import genai
from google.genai import types
from PIL import Image
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

# Load the source image
source_image = Image.open("source.jpg")

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents=["Transform this into a watercolor painting", source_image],
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif part.inline_data is not None:
        image = part.as_image()
        image.save("watercolor_output.png")
  • تقبل Python SDK كائنات PIL.Image مباشرةً — ولا حاجة إلى ترميز Base64 يدويًا.
  • لا تُضمّن البادئة data:image/jpeg;base64, عند تمرير سلاسل Base64 الخام.

التركيب من صور متعددة

أنشئ صورة جديدة من عدة صور إدخال. يدعم CometAPI نهجين:

الطريقة 1: صورة مجمعة واحدة

ادمج عدة صور مصدرية في صورة مجمعة واحدة، ثم صف النتيجة المطلوبة.
مثال على الصورة المجمعة المُدخلة
الناتج المُولَّد
from google import genai
from google.genai import types
from PIL import Image
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

collage = Image.open("collage.jpg")

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents=[
        "A model is posing and leaning against a pink BMW with a green alien keychain attached to a pink handbag, a pink parrot on her shoulder, and a pug wearing a pink collar and gold headphones",
        collage,
    ],
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

for part in response.parts:
    if part.inline_data is not None:
        part.as_image().save("composition_output.png")

الطريقة 2: صور منفصلة متعددة (حتى 14 صورة)

مرّر عدة صور مباشرةً. تدعم نماذج Gemini 3 ما يصل إلى 14 صورة مرجعية (عناصر + شخصيات):
from google import genai
from google.genai import types
from PIL import Image
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

image1 = Image.open("image1.jpg")
image2 = Image.open("image2.jpg")
image3 = Image.open("image3.jpg")

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents=["Merge the three images", image1, image2, image3],
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

for part in response.parts:
    if part.inline_data is not None:
        part.as_image().save("merged_output.png")
نتيجة التوليد من صور متعددة

توليد الصور بدقة 4K

حدّد image_config مع aspect_ratio وimage_size للحصول على مخرجات عالية الدقة:
from google import genai
from google.genai import types
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

response = client.models.generate_content(
    model="gemini-3.1-flash-image-preview",
    contents="Da Vinci style anatomical sketch of a Monarch butterfly on textured parchment",
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
        image_config=types.ImageConfig(
            aspect_ratio="1:1",
            image_size="4K",
        ),
    ),
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif image := part.as_image():
        image.save("butterfly_4k.png")

تحرير الصور متعدد الأدوار (Chat)

استخدم ميزة chat في SDK لتحسين الصور بشكل تكراري:
from google import genai
from google.genai import types
import os

client = genai.Client(
    http_options={"api_version": "v1beta", "base_url": "https://api.cometapi.com"},
    api_key=os.environ.get("COMETAPI_KEY"),
)

chat = client.chats.create(
    model="gemini-3.1-flash-image-preview",
    config=types.GenerateContentConfig(
        response_modalities=["TEXT", "IMAGE"],
    ),
)

# First turn: generate
response = chat.send_message(
    "Create a vibrant infographic explaining photosynthesis as a recipe, styled like a colorful kids cookbook"
)

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif image := part.as_image():
        image.save("photosynthesis.png")

# Second turn: refine
response = chat.send_message("Update this infographic to be in Spanish. Do not change any other elements.")

for part in response.parts:
    if part.text is not None:
        print(part.text)
    elif image := part.as_image():
        image.save("photosynthesis_spanish.png")

نصائح

حدّد كلمات مفتاحية للأسلوب (مثل: “cyberpunk, film grain, low contrast”)، ونسبة الأبعاد، والموضوع، والخلفية، والإضاءة، ومستوى التفاصيل.
عند استخدام HTTP الخام، لا تُضمّن البادئة data:image/png;base64, — استخدم فقط سلسلة Base64 الخام. يتولى Python SDK معالجة ذلك تلقائيًا باستخدام كائنات PIL.Image.
اضبط "responseModalities" على ["IMAGE"] فقط لضمان إخراج صورة بدون نص.
للمزيد من التفاصيل، راجع مرجع API. الوثائق الرسمية: Gemini Image Generation