توليد الصور وتحريرها باستخدام gpt-image-2

واجهة API متوافقة مع OpenAI لتوليد الصور من النص وتحرير الصور عبر gpt-image-2: جاهزة للاستخدام بمجرد تبديل base_url، ونقاط نهاية متعددة المناطق، وفوترة موحّدة باستخدام مفتاح QCode الخاص بك

آخر تحديث 2026-11-13

تحتاج مفتاح API؟ أنشئ حسابًا ←نقاط النهاية وعناوين Base URL ←

في هذه الصفحة

يوفّر QCode.cc خدمة gpt-image-2 تتوافق صيغ الطلب والاستجابة فيها مع OpenAI Images API (تختلف بعض سلوكيات المعاملات — راجع الاختلافات عن OpenAI API الرسمي)، وتغطي نقطتي نهاية:

  • توليد الصور من النص POST /v1/images/generations — طلب JSON، لتوليد الصور من النص وحده
  • تحرير الصور POST /v1/images/edits — رفع multipart من 1 إلى 8 صور مصدر (قناع اختياري)، وإعادة الرسم / التعديل / التركيب وفقًا للـ prompt (صدرت في مايو 2026)

gpt-image-2 هو أحدث نموذج صور من OpenAI (صدر في أبريل 2026) ويقدّم حاليًا أقوى عرض للنص داخل الصور بين جميع النماذج العامة — إذ يستطيع عرض الأحرف الإنجليزية والصينية داخل الصور المولّدة بموثوقية.

ℹ️ أصدرت OpenAI الإصدار gpt-image-2.5 في 2026-09-08 (أسماء النماذج في API gpt-image-2.5-flare / gpt-image-2.5-sunburst). تقبل هذه الخدمة gpt-image-2.5 وgpt-image-2.5-flare وgpt-image-2.5-sunburst بوصفها أسماء نماذج متوافقة، بحيث يعمل العملاء المهيّؤون مسبقًا للأسماء الجديدة كما هي. جميع هذه الأسماء تعمل، وفوترتها متطابقة؛ وتُعامَل فئتا الجودة xhigh / max كأنهما high، ولا تُدعم بعدُ قدرات الإصدار 2.5 وحدها مثل 4K / الدقات الحرة.

ما يضيفه QCode.cc:

  • يعمل مع OpenAI SDK — غيّر base_url وانتهى الأمر؛ تتطابق بنية الطلب والاستجابة مع OpenAI (بما في ذلك نقطة نهاية التحرير multipart)؛ وتختلف بعض سلوكيات المعاملات، راجع جدول الاختلافات في النهاية
  • وصول متعدد المناطق: توجيه ذكي عالمي (api) / آسيا (كوريا / تايوان / هونغ كونغ) / أمريكا الشمالية وأوروبا (لوس أنجلوس) — اختر نقطة الدخول الأقرب إلى شبكتك
  • مفتاح API واحد: أعد استخدام مفتاح cr_ الحالي من QCode.cc — الحصة والحساب نفسهما المستخدمان مع Claude Code وCodex
  • عرض استخدام موحّد: تُدمج استدعاءات الصور واستدعاءات المحادثة في لوحة التحكم، إضافةً إلى صفحة استخدام ذاتية الخدمة مخصّصة
  • حصة مشتركة عبر نقاط النهاية: تتشارك generations وedits الحد نفسه لكل مفتاح البالغ 100 صورة في اليوم وحد الطلبات المتزامنة البالغ 2

حالات الاستخدام الشائعة: توليد الملصقات، والرسوم التوضيحية، وصور المنتجات، ونماذج واجهة المستخدم التصورية، وأصول وسائل التواصل الاجتماعي، وتحرير الصور (الرسم الموضعي / تركيب عدة صور / تبديل الخلفية / الترميم عالي الدقة).


البدء السريع

تحويل النص إلى صورة (generations)

ثلاثة أسطر من Python لصورتك الأولى:

from openai import OpenAI
import base64

client = OpenAI(
    base_url="https://api.qcode.cc/qcode-img/v1",
    api_key="cr_YOUR_QCODE_API_KEY",
    timeout=180.0,  # typically 20-80s per image, occasionally over 100s; set at least 180s
)

result = client.images.generate(
    model="gpt-image-2",
    prompt="A cyberpunk Tokyo street at night, neon reflecting in rain puddles",
    size="1024x1024",
    quality="low",
    n=1,
)

with open("output.png", "wb") as f:
    f.write(base64.b64decode(result.data[0].b64_json))

تحرير الصورة (edits)

ارفع صورة موجودة مع prompt، واختياريًا مع قناع لإعادة الرسم الموضعي:

from openai import OpenAI
import base64

client = OpenAI(
    base_url="https://api.qcode.cc/qcode-img/v1",
    api_key="cr_YOUR_QCODE_API_KEY",
    timeout=180.0,
)

result = client.images.edit(
    model="gpt-image-2",
    image=open("cat.png", "rb"),
    mask=open("mask.png", "rb"),          # optional: PNG alpha; transparent area = repaint region
    prompt="put a tiny crown on the cat",
    size="1024x1024",
    quality="high",
)

with open("edited.png", "wb") as f:
    f.write(base64.b64decode(result.data[0].b64_json))

⚠️ اضبط المهلة دائمًا صراحةً على ≥ 180 ثانية: القيمة الافتراضية في OpenAI SDK قصيرة جدًا. استدلال gpt-image-2 أبطأ بكثير من تحويل النص إلى صورة التقليدي (راجع زمن الاستجابة والمهلة أدناه).


نقاط النهاية

تتوفر خدمة gpt-image-2 (سواء generations أو edits) على كل مدخل من QCode.cc. ما عليك سوى إلحاق /qcode-img/v1 بالعنوان الأساسي:

موقعك base_url الموصى به البروتوكول ملاحظات
الصين https://api.qcode.cc/qcode-img/v1 HTTPS يوصى به افتراضيًا
هونغ كونغ / جنوب شرق آسيا https://asia.qcode.cc/qcode-img/v1 HTTPS عقدة آسيا (كوريا / تايوان / هونغ كونغ، الأقرب)
أمريكا الشمالية / أوروبا https://us.qcode.cc/qcode-img/v1 HTTPS عقدة لوس أنجلوس

توجّه جميع المداخل إلى الخدمة نفسها ونظام الفوترة نفسه؛ الاستخدام والحصة موحّدان. لا يفرض أي مدخل حدًا قدره 100 ثانية على الطلب الواحد؛ ينتظر الخادم حتى 180 ثانية لكل طلب.

qcode-img هو بادئة المسار المخصصة لإنشاء الصور وتحريرها، بالتوازي مع /api (Anthropic) و/openai/v1 (دردشة OpenAI).


مرجع API

ترويسات الطلب الشائعة

الترويسة مطلوب القيمة
Authorization ✓ Bearer cr_xxxxxxxxxxxxxxxx (مفتاح API الخاص بك في QCode.cc)
Content-Type ✓ application/json (التوليد)
multipart/form-data (التعديلات)

نقطة نهاية التوليد /v1/images/generations

نقطة النهاية: POST {base_url}/images/generations نوع المحتوى: application/json

جسم الطلب:

{
  "model": "gpt-image-2",
  "prompt": "A small ceramic vase with sunflower, photorealistic",
  "size": "1024x1024",
  "quality": "low",
  "n": 1
}

الحقول:

الحقل النوع مطلوب الافتراضي القيم
model سلسلة ✗ gpt-image-2 gpt-image-2 (يقبل أيضًا gpt-image-2-low / -medium / -high، بما يعادل ضبط quality؛ وأسماء التوافق gpt-image-2.5 / gpt-image-2.5-flare / gpt-image-2.5-sunburst، وكلها قابلة للاستخدام مع فوترة متطابقة)؛ أي اسم نموذج آخر يُرجع 400 unsupported_model
prompt سلسلة ✓ — وصف الصورة، متعدد اللغات (بما في ذلك الإنجليزية والصينية)
size سلسلة ✗ 1024x1024 auto / 1024x1024 / 1024x1536 / 1536x1024 / 2048x2048؛ القيم غير الصالحة تُرجع 422. عادةً يطابق حجم الإخراج size المطلوب؛ وفي بعض الحالات يختلف الحجم المعاد (مثل 1254×1254) — اعتمد على الحجم الفعلي للصورة المعادة
quality سلسلة ✗ medium low / medium / high (xhigh / max تُعامَل كـ high)؛ لا تؤثر في السعر (راجع الفوترة)
n عدد صحيح ✗ 1 عدد الصور لكل استدعاء (1 – 4)؛ القيم > 4 تُرجع 400 (دون اقتطاع صامت)
background سلسلة ✗ auto auto / opaque؛ transparent يُرجع 400 (لا يمكن للنموذج إنتاج قناة alpha)
response_format سلسلة ✗ b64_json b64_json فقط؛ تمرير url يُرجع 400
output_compression عدد صحيح ✗ — 0 – 100، ينطبق على JPEG / WebP؛ القيم خارج النطاق تُرجع 400
stream / partial_images — ✗ — غير مدعومة بعد؛ تمريرها يُرجع 400

نقطة نهاية التعديلات /v1/images/edits

نقطة النهاية: POST {base_url}/images/edits نوع المحتوى: multipart/form-data (يتطلب رفع الملفات form-data، وليس JSON)

الحقول:

الحقل النوع مطلوب الافتراضي القيم / ملاحظات
model سلسلة ✗ gpt-image-2 يمكن حذفه؛ تستخدم نقطة نهاية التعديلات دائمًا gpt-image-2
image ملف (× N) ✓ — صورة المصدر (PNG / JPEG / WebP)؛ عدد الصور المدعوم: 1 – 8 لتركيب متعدد الصور (كرّر اسم الحقل نفسه: -F image=@a.png -F image=@b.png)
mask ملف ✗ — قناع alpha بصيغة PNG؛ المنطقة الشفافة = المنطقة المراد إعادة رسمها؛ يجب أن تطابق دقة القناع image (تُحجّم تلقائيًا)؛ ينطبق على تعديلات الصورة الواحدة
prompt سلسلة ✓ — تعليمات التعديل (متعددة اللغات)
size سلسلة ✗ auto auto / 1024x1024 / 1024x1536 / 1536x1024 / 2048x2048. عادةً يطابق حجم الإخراج size المطلوب؛ وفي بعض الحالات يختلف الحجم المعاد (مثل 1254×1254) — اعتمد على الحجم الفعلي للصورة المعادة. القيم غير الصالحة تُرجع 422
quality سلسلة ✗ auto auto / low / medium / high (xhigh / max تُعامَل كـ high)؛ لا تؤثر في السعر
n عدد صحيح ✗ 1 عدد الصور لكل استدعاء (1 – 4)؛ القيم > 4 تُرجع 400 (دون اقتطاع صامت)
background سلسلة ✗ auto auto / opaque. transparent غير مدعوم في gpt-image-2 (لا يمكن للنموذج إنتاج قناة alpha؛ وتمريره يُرجع 400)
output_format سلسلة ✗ png png / jpeg / webp
output_compression عدد صحيح ✗ — 0 – 100، ينطبق على JPEG / WebP (يُتجاهل مع PNG)؛ القيم خارج النطاق تُرجع 400
input_fidelity سلسلة ✗ — لا حاجة لتمريره: يعالج النموذج صور الإدخال دائمًا بدقة عالية؛ تمرير low / high يُتجاهل، وأي قيمة أخرى تُرجع 400
response_format سلسلة ✗ b64_json لا يُقبل سوى b64_json (تمرير url يُرجع 400)
user سلسلة ✗ — معرّف المستخدم النهائي يُمرَّر كما هو (لاكتشاف إساءة الاستخدام)

حدود حجم الرفع: الملف الواحد ≤ 25 MB؛ الإجمالي عبر الملفات ≤ 50 MB (تجاوز الحد يُرجع 413 image_too_large).

الاستجابة (نفسها لكلا نقطتي النهاية)

{
  "created": 1777135432,
  "data": [
    {
      "b64_json": "iVBORw0KGgo...(base64 PNG/JPEG/WebP, 1-3 MB)",
      "revised_prompt": "A small ceramic vase with sunflower..."
    }
  ]
}
  • b64_json: بيانات صورة بترميز base64؛ اعرضها مباشرة باستخدام <img src="data:image/<format>;base64,...">
  • revised_prompt: النسخة المحسّنة من prompt الأصلي الخاص بك من قبل النموذج (اختياري عرضها)

استجابات الأخطاء

تتبع الأخطاء مخطط OpenAI القياسي:

{
  "error": {
    "type": "rate_limit_error",
    "code": "image_daily_limit",
    "message": "Daily image generation count limit reached..."
  }
}
HTTP الرمز المعنى هل تُفوتر؟
400 invalid_json / missing_prompt جسم الطلب ليس JSON صالحًا / prompt مفقود لا
400 unsupported_model اسم النموذج غير مدعوم (gpt-image-2 وأسماؤه المتوافقة gpt-image-2.5 / -flare / -sunburst مدعومة؛ أما gpt-image-1 وdall-e-3 وغيرها فتُرجع هذا الخطأ) لا
400 stream_not_supported تم تمرير stream=true أو partial_images لا
400 unsupported_background / unsupported_response_format / unsupported_n / unsupported_output_compression قيمة معامل غير مدعومة (راجع جدول معاملات كل نقطة نهاية) لا
400 invalid_multipart / invalid_content_type نموذج الإرسال (form) غير صالح في نقطة نهاية التعديلات (يجب أن تكون multipart/form-data) لا
400 content_policy_violation وما شابهها رفضت مراجعة المحتوى الطلب؛ غيّر prompt أو الصورة لا
401 invalid_api_key / key_disabled / key_expired مفتاح API غير صالح / معطّل / منتهي الصلاحية لا
413 image_too_large ملف واحد > 25 MB، أو الإجمالي عبر الملفات > 50 MB لا
422 unsupported_size قيمة size غير مدعومة (القيم الصالحة في جدول معاملات كل نقطة نهاية) لا
429 crs_daily_exhausted / crs_total_exhausted استُهلكت ميزانية حسابك اليومية / الإجمالية لا
429 image_daily_limit بلغ الحد اليومي البالغ 100 صورة لكل مفتاح (مشترك بين generations وedits؛ يُرفع عند الطلب) لا
429 concurrency_exhausted بلغ حد التزامن البالغ 2 لكل مفتاح (يُرفع عند الطلب) لا
501 endpoint_not_implemented نقطة نهاية التعديلات مغلقة مؤقتًا للصيانة لا
503 image_provider_unavailable خدمة الصور غير متاحة مؤقتًا؛ تحمل الاستجابة Retry-After — تعامل معها وفق المهلة وإعادة المحاولة لا
503 service_overloaded / billing_backend_unavailable الخدمة مشغولة / الواجهة الخلفية للفوترة غير متاحة مؤقتًا، أعد المحاولة لاحقًا لا
504 upstream_timeout لم يكتمل طلب تعديل خلال 180 ثانية لا

أمثلة على الشيفرة

Python (OpenAI SDK، موصى به)

تحويل النص إلى صورة:

from openai import OpenAI
import base64

client = OpenAI(
    base_url="https://api.qcode.cc/qcode-img/v1",
    api_key="cr_YOUR_QCODE_API_KEY",
    timeout=180.0,
)

result = client.images.generate(
    model="gpt-image-2",
    prompt="A cyberpunk Tokyo street at night, neon reflecting in rain puddles",
    size="1024x1024",
    quality="low",
    n=1,
)

img_bytes = base64.b64decode(result.data[0].b64_json)
with open("output.png", "wb") as f:
    f.write(img_bytes)
print("Saved output.png")

تحرير الصورة (صورة واحدة + الترميم بالقناع):

from openai import OpenAI
import base64

client = OpenAI(
    base_url="https://api.qcode.cc/qcode-img/v1",
    api_key="cr_YOUR_QCODE_API_KEY",
    timeout=180.0,
)

result = client.images.edit(
    model="gpt-image-2",
    image=open("cat.png", "rb"),
    mask=open("mask.png", "rb"),
    prompt="put a tiny crown on the cat",
    size="1024x1024",
    quality="high",
    extra_body={"output_format": "png"},
)

img = base64.b64decode(result.data[0].b64_json)
with open("edited.png", "wb") as f:
    f.write(img)

تحرير الصورة (تركيب متعدد الصور، من 2 إلى 8 صور):

result = client.images.edit(
    model="gpt-image-2",
    image=[
        open("scene.png", "rb"),       # 1st image: scene background
        open("product.png", "rb"),     # 2nd image: product to place
    ],
    prompt="Place the product naturally into the scene, match the lighting and shadows.",
    size="1536x1024",
    quality="high",
)

curl

تحويل النص إلى صورة:

curl https://api.qcode.cc/qcode-img/v1/images/generations \
  -H "Authorization: Bearer cr_YOUR_QCODE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "A cyberpunk Tokyo street at night",
    "size": "1024x1024",
    "quality": "low",
    "n": 1
  }' \
  | jq -r ".data[0].b64_json" | base64 -d > output.png

تحرير الصورة:

curl https://api.qcode.cc/qcode-img/v1/images/edits \
  -H "Authorization: Bearer cr_YOUR_QCODE_API_KEY" \
  -F "model=gpt-image-2" \
  -F "image=@cat.png" \
  -F "mask=@mask.png" \
  -F "prompt=put a tiny crown on the cat" \
  -F "size=1024x1024" \
  -F "quality=high" \
  -F "output_format=png" \
  | jq -r ".data[0].b64_json" | base64 -d > edited.png

تركيب متعدد الصور (يكفي تكرار -F image=@):

curl https://api.qcode.cc/qcode-img/v1/images/edits \
  -H "Authorization: Bearer cr_YOUR_QCODE_API_KEY" \
  -F "model=gpt-image-2" \
  -F "image=@scene.png" \
  -F "image=@product.png" \
  -F "prompt=Place the product naturally into the scene" \
  -F "size=1536x1024" \
  -F "quality=high"

JavaScript / Node.js / المتصفح

تحويل النص إلى صورة:

const r = await fetch("https://api.qcode.cc/qcode-img/v1/images/generations", {
  method: "POST",
  headers: {
    "Authorization": "Bearer cr_YOUR_QCODE_API_KEY",
    "Content-Type":  "application/json",
  },
  body: JSON.stringify({
    model: "gpt-image-2",
    prompt: "A cyberpunk Tokyo street at night",
    size: "1024x1024",
    quality: "low",
    n: 1,
  }),
});
const json = await r.json();
const dataUrl = "data:image/png;base64," + json.data[0].b64_json;
document.querySelector("img").src = dataUrl;

تحرير الصورة (FormData في المتصفح):

const fd = new FormData();
fd.append("model", "gpt-image-2");
fd.append("image", imageFile);              // File object from <input type="file">
fd.append("mask", maskFile);                // optional
fd.append("prompt", "put a tiny crown on the cat");
fd.append("size", "1024x1024");
fd.append("quality", "high");
fd.append("output_format", "png");

const r = await fetch("https://api.qcode.cc/qcode-img/v1/images/edits", {
  method: "POST",
  headers: { "Authorization": "Bearer cr_YOUR_QCODE_API_KEY" },
  // Don't set Content-Type manually — FormData sets multipart/form-data with the boundary
  body: fd,
});
const json = await r.json();
const dataUrl = "data:image/png;base64," + json.data[0].b64_json;
document.querySelector("img").src = dataUrl;

الحصص

القيم الافتراضية

البعد القيمة الافتراضية ملاحظات
عدد الصور اليومي 100 / يوم / مفتاح يُعاد ضبطه عند 00:00 بتوقيت بكين؛ مشترك بين generations وedits
التزامن 2 قيد التنفيذ يعيد 429 concurrency_exhausted؛ ومشترك عبر نقطتي النهاية
حجم الرفع (لـ edits فقط) 25 MB لملف واحد / 50 MB إجمالًا يعيد 413 image_too_large
ميزانية الحساب مشتركة مع dailyCostLimit / totalCostLimit في حساب QCode.cc الخاص بك يعيد 429 crs_daily_exhausted

تغطي القيم الافتراضية الغالبية العظمى من المستخدمين. تواصل مع الدعم لرفعها.

استعلام الاستخدام

  • لوحة التحكم — تعرض استدعاءات الدردشة والصور معًا (آخر نشاط، تكلفة اليوم، التكلفة الإجمالية، توزيع النماذج)
  • صفحة الخدمة الذاتية: https://api.qcode.cc/qcode-img/usage — أدخل مفتاح API الخاص بك لعرض استخدام آخر 30 يومًا، وقائمة الاستدعاءات المفصلة، واتجاه ECharts (يُحفظ المفتاح محليًا في متصفحك، ولا يُرفع أبدًا)

الفوترة

كيف تعمل الفوترة

تُفوتر generations وedits بالطريقة نفسها، لكل صورة إخراج:

البند الخاضع للفوترة سعر الوحدة
لكل صورة إخراج $0.30
  • $0.30 لكل صورة إخراج: توليد n من الصور يكلّف n × $0.30
  • size / quality / عدد صور الإدخال / mask / طول prompt لا تؤثر في السعر
  • gpt-image-2، وgpt-image-2-low / -medium / -high، والأسماء المتوافقة gpt-image-2.5 / -flare / -sunburst تشترك كلها في السعر نفسه
  • اعتبارًا من 2026-10-07، السعر $0.30 لكل صورة (كان $0.15 لكل صورة اعتبارًا من 2026-10-06؛ وقبل ذلك كانت الفوترة لكل token)

لا تُحتسب الإخفاقات

أي طلب فاشل لا تُحتسب فوترته أبدًا: لا تُحتسب 4xx (بما في ذلك رفض مراجعة المحتوى) / 5xx، ولا حالات انتهاء المهلة، ولا انقطاعات العميل (الاتصالات المغلقة).

العملة

تُحدَّد التكاليف بالدولار الأمريكي USD وتُسوَّى وفق سياسة العملة لحساب QCode.cc الخاص بك (CNY / USD).


إعدادات زمن الاستجابة والمهلة

gpt-image-2 نموذج قائم على الاستدلال ويستغرق وقتًا أطول بشكل ملحوظ من نماذج تحويل النص إلى صورة القديمة. تستغرق الصورة الواحدة عادةً 20–80 ثانية، وأحيانًا أكثر من 100 ثانية، وفي حالات نادرة تقترب من 180 ثانية.

نصائح عملية:

  • مهلة OpenAI Python SDK الافتراضية أقصر من اللازم — عيّن timeout=180.0 أو قيمة أعلى صراحةً دائمًا
  • لا توجد مهلة افتراضية لـ fetch في المتصفح؛ إذا استخدمت AbortController فامنحه 180 ثانية على الأقل
  • إذا مرّ الطلب عبر وكيل عكسي / بوابة خاصة بك، فارفع مهلة القراءة فيها إلى ≥ 180 ثانية

المهلة وإعادة المحاولة

  • 503 image_provider_unavailable: خدمة الصور غير متاحة مؤقتًا، ولا يتم تحصيل أي مبلغ. انتظر وفقًا لما تحدده ترويسة الاستجابة Retry-After (بالثواني)، ثم أعد المحاولة بتراجع أسي (30 s → 60 s → 120 s) بحد أقصى 3 محاولات؛ إذا استمر الفشل، فتواصل مع الدعم
  • 504 upstream_timeout / المهلة من جانب العميل: تجاوز توليد واحد 180 ثانية. لا بأس بإعادة المحاولة مباشرةً؛ وإذا استمرت المهلات، فبسّط الـ prompt أو قلّل عدد صور الإدخال
  • 429 crs_daily_exhausted / crs_total_exhausted: استُنفدت حصة الحساب، وتُعالج بالطريقة نفسها المتبعة في نقاط نهاية الدردشة: تُصفَّر الخطة الشخصية عند 00:00 بتوقيت بكين (أو اشترِ باقة التعزيز)، وتُجدَّد باقة الدفع حسب الاستخدام؛ راجع مرجع الأخطاء
  • 429 image_daily_limit / concurrency_exhausted: انتظر وفقًا لترويسة Retry-After؛ وإذا استمر ذلك، فتواصل مع الدعم
  • لا تُحتسب تكلفة الطلبات الفاشلة، لذا لا تؤدي إعادة المحاولة أبدًا إلى تحصيل مبلغ مضاعف

نصائح صياغة الـ prompt

تحويل النص إلى صورة (generations)

  • متعدد اللغات: تعمل الـ prompts بالصينية أو الإنجليزية أو المختلطة جميعها
  • مزيد من التفاصيل أفضل: البيئة، والتكوين، والإضاءة، والأسلوب، ومسافة العدسة / البعد البؤري / الزاوية
  • تجنّب أسماء العلامات التجارية / الأشخاص المشهورين: قد يرفض النموذج أو يعيد نتائج ضبابية (سياسة محتوى OpenAI)
  • النص داخل الصورة: يتميز gpt-image-2 في عرض النص الإنجليزي / الصيني داخل الصور (عناوين الملصقات، والشعارات، واللافتات) — ضع النص الحرفي في الـ prompt فقط، دون صياغة خاصة
  • مراجعة المحتوى: يعيد الـ prompt الذي يخالف سياسة المحتوى الرمز 400 (مثل content_policy_violation) ولا تُحتسب تكلفته

مثال:

A vintage poster in Bauhaus style, bold black text "MORNING COFFEE" centered,
warm orange and cream color palette, geometric shapes, slightly textured paper background

تحرير الصورة (edits)

  • يحدد القناع «أين»، لا «ماذا»: المنطقة الشفافة = المنطقة المراد إعادة رسمها، والمنطقة المعتمة محفوظة. يصف الـ prompt ما يجب رسمه. يجب أن تطابق دقة القناع دقة image (يعيد النظام تحجيمها).
  • مع مدخلات الصور المتعددة، سمِّ دور كل صورة في الـ prompt — مثل «الصورة الأولى هي المشهد، والصورة الثانية هي المنتج المراد وضعه فيه» — يقرأ gpt-image-2 المدخلات بالترتيب.
  • لا حاجة لتمرير input_fidelity: يعالج gpt-image-2 صور الإدخال دائمًا بدقة عالية، مع الحفاظ تلقائيًا على الوجوه / الشعارات / النصوص / تفاصيل المنتج (يُتجاهل تمرير low / high، وأي قيمة أخرى تُرجع 400).
  • من دون قناع، يُعاد رسم الصورة كاملة وفقًا للـ prompt (تُحفظ البنية الدلالية، لكن قد تتغير كل منطقة).

مثال:

# Local inpaint: add a crown, keep the rest unchanged
prompt = "Put a tiny golden crown on the cat's head. Keep everything else unchanged."
mask = (alpha PNG with only the head area transparent)

الفروق مقابل API OpenAI الرسمي

المعيار OpenAI الرسمي QCode.cc
التوافق مع SDK — ✅ صيغ الطلب / الاستجابة متوافقة، ويكفي تغيير base_url؛ وتسرد الصفوف أدناه فروق السلوك
الفوترة لكل token $0.30 لكل صورة إخراج، عدد الصور n = n × $0.30
/v1/images/generations (تحويل النص إلى صورة) ✅ ✅
/v1/images/edits (تحرير صورة) ✅ ✅ يدعم تركيب 1 – 8 صور والتعبئة الداخلية بالقناع
size — عادةً ما يطابق حجم الإخراج size؛ وقد يختلف أحيانًا — اعتمد على الصورة المعادة
quality — لا يؤثر في السعر
background=transparent — ❌ يعيد 400
response_format=url — ❌ b64_json فقط
stream + partial_images (الإرجاع التدريجي) ✅ ⏳ غير مدعوم بعد، وتمريرهما يعيد 400
/v1/images/variations (المتغيّرات الصرفة) ✅ (نقطة نهاية DALL·E) ⏳ غير مدعوم بعد (قرّبه باستخدام edits مع prompt وصفي)
gpt-image-2.5 (flare / sunburst) ✅ (صدر في 2026-09-08) ✅ يقبل أسماء النماذج المتوافقة، وكلها قابلة للاستخدام مع فوترة مطابقة؛ تُعامَل xhigh / max كما high، والقدرات الخاصة بـ 2.5 فقط (4K وما شابه) غير مدعومة بعد

ساحة التجربة عبر الإنترنت

https://api.qcode.cc/qcode-img/ — جرّبه في متصفحك:

  • وضعا تحويل النص إلى صورة وتحرير الصورة مهيآن بصريًا (الرفع، ورسم القناع، واختيار background / output_format، إلخ.)
  • أدخل مفتاح API الخاص بك + prompt لتوليد الصورة فورًا
  • مبدّل واجهة المستخدم بين الإنجليزية والصينية
  • يستخدم جودة low افتراضيًا
  • يتضمن مرجع API كاملًا ضمن الصفحة (تبويبات curl / Python / JavaScript + جدول المعاملات + رموز الأخطاء)
  • تنزيل بنقرة واحدة بصيغة PNG / JPEG / WebP

الأسئلة الشائعة

س: ماذا أفعل بشأن 503 image_provider_unavailable؟ ج: خدمة الصور غير متاحة مؤقتًا، ولا تُفوتر الطلبات الفاشلة. انتظر وفقًا لما توجّهك إليه ترويسة Retry-After ثم أعد المحاولة (تراجع أُسّي يبدأ من 30 ثانية، بحد أقصى 3 محاولات). إذا استمر الفشل، فتواصل مع الدعم.

س: هل تدعم gpt-image-2.5 (flare / sunburst)؟ ج: يمكنك استخدام أسماء النماذج gpt-image-2.5 وgpt-image-2.5-flare وgpt-image-2.5-sunburst مباشرةً — كل هذه الأسماء تعمل، مع فوترة مطابقة؛ تُعامَل فئتا الجودة xhigh / max كما high، والقدرات الخاصة بـ 2.5 فقط مثل 4K غير مدعومة بعد.

س: لماذا يختلف حجم الإخراج عن size الذي أرسلته؟ ج: يطابق حجم الإخراج size المطلوب عادةً؛ وفي بعض الحالات يختلف الحجم المعاد (مثل 1254×1254)، لذا اعتمد على الحجم الفعلي للصورة المعادة. إذا كنت تحتاج إلى حجم دقيق، فاقتصّ الصورة أو غيّر مقياسها محليًا.

س: هل يؤثر quality في السعر؟ ج: لا يؤثر quality في السعر — سواء كان low أو high، فالسعر $0.30 لكل صورة إخراج.

س: هل تُفوتر الطلبات الفاشلة؟ ج: لا. لا تُفوتر 4xx / 5xx، ولا المهلات، ولا حالات رفض مراجعة المحتوى، ولا انقطاعات العميل.


الوثائق ذات الصلة

ابدأ مع QCode

مفتاح API واحد لـ Claude Code وCodex وغيرها — تُحسب حسب التوكن، وأسعار كل نموذج على qcode.cc/models

المؤسسات ←