ولّد لونًا مكمّلًا من قيمة hex أو RGB
يقع اللون المكمّل في الجهة المقابلة تمامًا للون الأساس على دائرة الألوان. تقبل هذه الأداة قيمة hex أو RGB مألوفة، وتحافظ على التشبع والإضاءة، ثم تدوّر الصبغة 180 درجة بالضبط وتعيد لون الأساس بعد توحيد صيغته مع اللون المكمّل الناتج.
شغّل الأداة مجانًا
يمكنكم استخدامها لبناء علاقة قوية بين لونين في الواجهات والرسوم التوضيحية والمخططات ودراسات الهوية ورموز التصميم. الحساب حتمي؛ فالإدخال الصحيح نفسه يعطي النتيجة نفسها دائمًا، أما صيغة اللون غير الصحيحة فتُرفض برسالة إدخال واضحة.
أدخلوا لون أساس دقيقًا
ابدؤوا باللون المعروف لديكم. تقبل الأداة صيغة hex من ثلاثة أرقام مثل #369، أو من ستة أرقام مثل #336699، أو الأرقام الستة نفسها من دون علامة المربع، أو دالة RGB مثل rgb(51, 102, 153). لا تتأثر أحرف hex بحالة الحرف، وتُوحّد النتيجة إلى صيغة hex من ستة أرقام بأحرف كبيرة لتسهيل نسخها. يجب أن تكون قنوات RGB أعدادًا صحيحة من صفر إلى 255. تُرفض الصيغ الملتبسة، ومنها أسماء ألوان CSS وقنوات ألفا والنسب المئوية وسلاسل hex الناقصة والقيم الخارجة عن النطاق، بدل تخمين المقصود. أرسلوا القيمة في الحقل color؛ ويُقبل الاسم البديل value أيضًا. تكرر الاستجابة لون الأساس بعد توحيد صيغته كي تتحققوا مما فهمته الخدمة بدقة قبل استخدام اللون الناتج.
افهموا تدوير الصبغة 180 درجة
يحوّل الحساب لون الأساس من RGB إلى نموذج HSL، ويضيف 180 درجة إلى الصبغة، ثم يعيد النتيجة إلى نطاق الدائرة البالغ 360 درجة ويحوّلها مجددًا إلى RGB. يبقى التشبع والإضاءة من دون تغيير. هذه عملية استخراج للمكمّل على دائرة الألوان، وليست قلبًا بسيطًا لكل قناة RGB. ينتقل الأحمر نحو السماوي، والأخضر نحو الأرجواني، والأزرق نحو الأصفر. لا يحدث التقريب إلا عند العودة إلى قنوات RGB الصحيحة التي تتطلبها صيغ الألوان الرقمية الشائعة. الرمادي المحايد تشبعه صفر ولا يملك صبغة مرئية؛ لذلك لا يغيّر تدوير الصبغة مظهره. تتضمن الاستجابة صيغة hex وقنوات الأحمر والأخضر والأزرق منفصلة لكل من الأساس والمكمّل، فتصلح للاستخدام المرئي والمسارات البرمجية من دون تحليل سلسلة منسقة.
استخدموا النتيجة كنقطة بداية
تصنع الألوان المكمّلة فصلًا قويًا، لكن الزوج الخام نقطة بداية لا ضمانًا لإتاحة التصميم أو جودة التكوين. قد يسبب وضع لونين مكمّلين شديدي التشبع بمساحتين متساويتين اهتزازًا بصريًا؛ لذلك تستخدم واجهات كثيرة صبغة واحدة للمساحة المهيمنة وتحصر اللون المكمّل في لمسة صغيرة أو مؤشر حالة أو سلسلة بيانات أو دعوة إلى إجراء. يمكنكم أيضًا إنشاء درجات فاتحة وداكنة من اللونين. افحصوا تباين النصوص وعناصر التحكم مع الخلفية الفعلية، لأن التقابل على دائرة الألوان لا يعني تساوي السطوع. تفيد النتيجة الحتمية عندما تحتاج عملية build إلى اشتقاق اللمسة نفسها من لون علامة محفوظ في كل تشغيل. كما تناسب النماذج الأولية والمخططات والسمات ومسارات الأصول. تستخدم طلبات API السعر الأساسي المنشور $0.002، بينما ينفّذ المتصفح الحساب النقي نفسه محليًا.
حالات الاستخدام
أنشئوا لون إبراز للواجهة
ولّدوا صبغة مقابلة للأزرار والشارات ومواضع التمييز وعناصر التركيز انطلاقًا من لون سمة قائم.
ابنوا لوحة لمخطط ذي سلسلتين
اشتقوا صبغة ثانية واضحة الانفصال عن لون السلسلة الأولى، ثم تحققوا من التباين في المخطط النهائي.
أتمتوا رموز التصميم
حوّلوا قيمة hex محفوظة للعلامة إلى رمز مكمّل حتمي أثناء عملية build أو إنشاء السمات.
الأسئلة الشائعة
ما صيغ الألوان المقبولة؟
استخدموا hex من ثلاثة أو ستة أرقام، أو hex من ستة أرقام بلا علامة مربع، أو rgb(r, g, b) بقنوات صحيحة من 0 إلى 255.
كيف يُحسب اللون المكمّل؟
تُحوّل قيمة RGB الأساسية إلى HSL، وتُدار صبغتها 180 درجة، ثم تُحوّل النتيجة مجددًا إلى RGB.
هل يساوي ذلك قلب قنوات RGB؟
لا. تدوّر الأداة الصبغة مع إبقاء تشبع HSL وإضاءته، أما قلب RGB مباشرة فهو عملية مختلفة.
ماذا يحدث للرمادي والأبيض والأسود؟
لا تملك الألوان المحايدة صبغة مرئية، ولذلك لا يغيّر تدوير الصبغة مظهرها.
ما تكلفة طلب API؟
يستخدم كل طلب السعر الأساسي المنشور $0.002. ويتوفر الحساب الحتمي نفسه ضمن تجربة المتصفح.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/color/complementary-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color":"#336699"}'const res = await fetch("https://api.kit.forhosting.com/color/complementary-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color": "#336699"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/complementary-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color": "#336699"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/complementary-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color":"#336699"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color":"#336699"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/complementary-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"color": "#336699"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.complementary_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |