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