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