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