توليد الصور وتحريرها باستخدام gpt-image-2
واجهة API متوافقة مع OpenAI لتوليد الصور من النص وتحرير الصور عبر gpt-image-2: جاهزة للاستخدام بمجرد تبديل base_url، ونقاط نهاية متعددة المناطق، وفوترة موحّدة باستخدام مفتاح QCode الخاص بك
تحتاج مفتاح 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، ولا المهلات، ولا حالات رفض مراجعة المحتوى، ولا انقطاعات العميل.
الوثائق ذات الصلة¶
- نقاط النهاية ومسارات API — قائمة كاملة بمدخلات QCode.cc، ومسارات البروتوكول، واختبار curl السريع
- الفوترة — الخطط، والحصص، وقواعد التكلفة
ابدأ مع QCode
مفتاح API واحد لـ Claude Code وCodex وغيرها — تُحسب حسب التوكن، وأسعار كل نموذج على qcode.cc/models