فحص تمييز ألوان اللوحة مع البروتانوبيا والديوترانوبيا
ينبغي للوحة الألوان الفئوية أن تحقق أكثر من المظهر الجذاب في ظروف الرؤية المعتادة.
شغّل الأداة مجانًا
يجب أن تبقى ألوانها قابلة للتمييز عندما يشاهد رسماً بيانياً أو خريطة أو لوحة معلومات أو واجهة شخص لديه أحد أوجه قصور رؤية الأحمر والأخضر الشائعة. تحاكي هذه الأداة البروتانوبيا والديوترانوبيا الكاملتين، وتقيس كل زوج في فضاء لوني إدراكي، وتحدد الأزواج التي تنخفض عن عتبة التمييز المختارة. وهكذا تقدم إنذاراً مبكراً قابلاً لإعادة الإنتاج، مع إبقاء المراجعة النهائية للتسميات والأشكال وأنماط الخطوط وأحجام العرض الفعلية ضمن مسؤولية التصميم.
افحصوا كل علاقة داخل لوحة الألوان الفئوية
يُستخدم اللون الفئوي للفصل بين فئات مستقلة، مثل خطوط المنتجات في رسم بياني، والمسارات على خريطة، والحالات في لوحة معلومات، والفرق في شاشة تخطيط. قد تبدو اللوحة متنوعة، لكنها قد تحتوي لونين يتقاربان لدى شخص لديه قصور في رؤية الأحمر والأخضر. أدخلوا من لونين إلى أربعة وستين لوناً ست عشرياً. توحّد الأداة الصيغتين القصيرة والطويلة، وتقيّم كل زوج فريد، وتعيد الفهارس الأصلية كي تعثروا على العينات الدقيقة في النظام المصدر. تبين النتيجة ما إذا اجتازت اللوحة الفحص، وعدد الأزواج المفحوصة، والأزواج التي تحتاج إلى معالجة. كما تعيد الألوان الست عشرية المحاكية للبروتانوبيا والديوترانوبيا، مما يسهل فحص النتيجة الرقمية أو إعادة إنتاجها في مراجعة التصميم. إذا أُشير إلى زوج، فزيدوا الفرق في السطوع أو التشبع أو درجة اللون، ثم أعيدوا الاختبار. تُكتشف الألوان المكررة تلقائياً لأن مسافتها الإدراكية تساوي صفراً. وتُرفض الصيغ غير الصالحة والقوائم التي تتجاوز الحد واللوحات التي تقل عن لونين، بدلاً من تقديم نتيجة مضللة.
افهموا المحاكاة والعتبة
تفك العملية أولاً ترميز كل لون sRGB وتحول قنواته إلى قيم خطية، لأن مصفوفات قصور الرؤية لا ينبغي تطبيقها مباشرة على قيم العرض المشفرة بغاما. ثم تطبق مصفوفات معتمدة للشدة الكاملة، بصورة منفصلة للبروتانوبيا والديوترانوبيا، وتحول كل نتيجة محاكاة إلى CIE Lab، وتقيس الفصل بين الزوجين بصيغة CIE76. يُشار إلى الزوج عندما تكون مسافته أقل من العتبة بصورة صارمة. القيمة الافتراضية هي 20، وهي معيار فحص عملي مقصود للوحات الفئوية، وليست ادعاءً بأن رقماً واحداً يمثل كل شخص أو ظرف مشاهدة. يمكنكم خفضها لفحص تقني أقل تحفظاً، أو رفعها عندما تتطلب العلامات الصغيرة أو الخطوط الرفيعة أو الشاشات الرديئة أو القراءة السريعة فصلاً أقوى. تحتفظ المخرجات بنتائج حالتي المحاكاة كل على حدة، وتقدم أيضاً قائمة موحدة، وبذلك يمكن لسير العمل الآلي تسجيل فشل واحد من دون فقدان تفاصيل التشخيص. وتظهر المسافة الأصلية مع الأزواج المشار إليها لتوضيح الألوان التي تبدأ متباعدة ثم تتقارب بعد المحاكاة. تُقرب المسافات المعروضة لضمان استقرار النتائج، مع الحفاظ على اتساق المقارنة الحسابية.
اجعلوا النتيجة جزءاً من التصميم الميسّر
يعد اجتياز اللوحة دليلاً مفيداً، لكنه ليس شهادة كاملة على إمكانية الوصول. يتغير مظهر اللون بحسب الألوان المحيطة وحجم العلامة وتنعيم الحواف ومعايرة الشاشة والإضاءة المحيطة ونوع رؤية الألوان لدى كل شخص ودرجتها. والأهم أن الواجهة ينبغي ألا تنقل معنى أساسياً باللون وحده. اجمعوا هذا الفحص مع التسميات المباشرة أو الأيقونات أو الأنماط أو الأشكال أو الخطوط المتقطعة أو الموضع، كي يستطيع الشخص تحديد الفئات حتى عندما يصعب تسمية لونين. وفي الرسوم البيانية، اختبروا التصور النهائي بالحجم المتوقع بدلاً من اعتماد عينات منفردة فقط. وبالنسبة إلى حالات مثل النجاح والفشل، افحصوا تباين النص والخلفية بصورة مستقلة، لأن المسافة الفئوية وتباين WCAG يجيبان عن سؤالين مختلفين. في نظام التصميم، شغّلوا هذه القدرة كلما تغيرت رموز اللوحة، واحفظوا نتيجة JSON الحتمية مع اختبارات الجودة الأخرى. ينتج الإدخال المرتب نفسه الحساب نفسه دائماً، من دون شبكة أو عشوائية أو استدلال نموذج أو بيانات مرتبطة بالوقت. يشترك المتصفح وAPI في المحلل نفسه، مما يتيح التجربة التفاعلية وفرض العتبة في التكامل المستمر مقابل $0.002 لكل طلب.
حالات الاستخدام
مراجعة ألوان سلاسل الرسوم
اعثروا قبل نشر لوحة المعلومات على ألوان الخطوط أو الأعمدة أو المساحات التي قد تتقارب مع قصور رؤية الأحمر والأخضر.
حماية رموز نظام التصميم
شغّلوا فحصاً حتمياً عند تغير رموز الألوان الفئوية، وامنعوا المراجعات التي تضيف زوجاً ملتبساً.
تدقيق فئات الخرائط والحالات
حددوا المناطق أو المسارات أو الحالات التي تحتاج إلى فرق أكبر في الدرجة أو السطوع أو إلى تسميات وأنماط وأيقونات.
الأسئلة الشائعة
ما صيغ الألوان المقبولة؟
استخدموا ألوان sRGB ست عشرية بصيغة #RGB أو #RRGGBB. تُوسّع الصيغة القصيرة وتُوحّد المخرجات إلى #RRGGBB بأحرف كبيرة.
ماذا تعني العتبة؟
هي أدنى مسافة CIE76 مسموح بها بعد المحاكاة. يُشار إلى أي زوج أدنى منها، والقيمة الافتراضية هي 20.
هل تضمن النتيجة الآمنة إمكانية الوصول؟
لا. إنها نتيجة فحص للوحة. استخدموا إشارات إضافية، واختبروا التصميم النهائي، وأجروا فحوص التباين الملائمة.
ما أوجه قصور الرؤية التي تُحاكى؟
تحاكي الأداة البروتانوبيا والديوترانوبيا الكاملتين كل واحدة على حدة، وتورد الأزواج المتعثرة في كل حالة.
لماذا تُدرج المسافة الأصلية؟
تساعد على كشف الأزواج التي تبدو متباعدة قبل المحاكاة، ثم تصبح متقاربة في إحدى الحالتين أو كلتيهما.
ما تكلفة API؟
تكلفة كل طلب API هي $0.002. ويمكنكم أيضاً تشغيل المحلل الحتمي نفسه في المتصفح.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/color/color-blind-safe-palette-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"colors":["#0072B2","#D55E00","#009E73","#CC79A7"]}'const res = await fetch("https://api.kit.forhosting.com/color/color-blind-safe-palette-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"colors": [
"#0072B2",
"#D55E00",
"#009E73",
"#CC79A7"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/color-blind-safe-palette-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"colors": [
"#0072B2",
"#D55E00",
"#009E73",
"#CC79A7"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/color-blind-safe-palette-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"colors":["#0072B2","#D55E00","#009E73","#CC79A7"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"colors":["#0072B2","#D55E00","#009E73","#CC79A7"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/color-blind-safe-palette-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"colors": [
"#0072B2",
"#D55E00",
"#009E73",
"#CC79A7"
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.color_blind_safe_palette_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |