الانتقال إلى المحتوى الرئيسي
يوضح هذا الدليل كيفية استخدام نماذج صور 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")

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

استخدم ميزة الدردشة في 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")

نصائح

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