محوّل XYZ إلى xyY
يحوّل محوّل XYZ إلى xyY ثلاث قيم ثلاثية التحفيز وفق CIE إلى إحداثيين للونية وقيمة مستقلة للسطوع.
شغّل الأداة مجانًا
وبذلك يمكنكم مقارنة اللون بمعزل عن شدة الإضاءة، مع الاحتفاظ بالمكوّن Y الأصلي للأعمال التي تتأثر بالسطوع. أدخلوا قيما غير سالبة لـ X وY وZ ضمن مقياس واحد متسق؛ إذ يتحقق المحوّل منها، ويرفض لونية الأسود غير المعرّفة، ثم يعيد نتائج عددية مستقرة باستخدام معادلات التطبيع القياسية لـ CIE.
فهم الفرق بين XYZ وxyY
يمثل CIE XYZ المثير بثلاث قيم ثلاثية التحفيز، لكنه يجمع بين مقدار هذه القيم ونسبها. أما تمثيل xyY فيفصل بين المفهومين. يصف الإحداثيان x وy المكتوبان بحرفين صغيرين اللونية، أي اللون بصورة عامة بمعزل عن شدته الكلية. ويحتفظ Y المكتوب بحرف كبير بالمكوّن الأصلي المرتبط بالسطوع. يفيد هذا الفصل عندما تحتاجون إلى رسم الألوان على مخطط اللونية CIE 1931، أو مقارنة قياسين عند مستويين مختلفين من السطوع، أو تخزين السطوع بجانب زوج موجز من الإحداثيات. لا يطبق التحويل تكييفا للنقطة البيضاء، ولا منحنى غاما، ولا مصفوفة RGB، ولا تصحيحا إدراكيا؛ بل يطبّع قيم XYZ المدخلة فحسب. لذلك تظل شروط الراصد والمضيء والقياس ومقياس XYZ من مسؤولية مسار العمل اللوني المحيط. وإذا أُنتجت مجموعتان من XYZ تحت شروط مرجعية مختلفة، فإن تحويلهما إلى xyY لا يجعل تلك الشروط متكافئة. استخدموا قيما تنتمي إلى السياق القياسي اللوني نفسه، وفسروا الإحداثيات الناتجة داخل ذلك السياق.
آلية الحساب الحتمي
يتحقق المحوّل أولا من أن X وY وZ أعداد محدودة وغير سالبة، ثم يحسب المجموع X + Y + Z. تساوي x الصغيرة قيمة X مقسومة على ذلك المجموع، وتساوي y الصغيرة قيمة Y مقسومة على المقام نفسه. أما Y الكبيرة في النتيجة فتُنسخ من المدخل من دون تطبيع، وبذلك تحتفظ بالمقدار المرتبط بالسطوع وبمقياسه الأصلي. ولأن إحداثيي اللونية يستخدمان مقاما مشتركا، لا يعتمد x وy على المقياس؛ فضرب مدخلات XYZ الثلاثة في العامل الموجب نفسه يبقي x وy من دون تغيير، بينما يغير Y بذلك العامل. تُقرّب النتائج إلى دقة معنوية مستقرة كي تنتج العمليات المتكررة قيم JSON متسقة. ولا تدخل في الحساب شبكة أو عشوائية أو ساعة أو جدول بحث أو ملف تعريف لوني خاص بالبيئة. تُرفض المجموعة X = 0 وY = 0 وZ = 0 لأن مقامها يساوي صفرا، ولأن المثير المظلم تماما لا يملك لونية معرّفة. كما تُرفض القيم الضخمة التي يتجاوز مجموعها النطاق العددي المحدود بدلا من إرجاع أصفار مضللة أو قيم غير محدودة.
إعداد المدخلات وتفسير النتيجة بأمان
استخدموا مقياسا واحدا متسقا للمدخلات الثلاثة. غالبا ما يُعبّر عن XYZ بأبيض مرجعي قريب من Y = 100، لكن القيم المطبّعة القريبة من Y = 1 صالحة أيضا؛ ولا يفترض هذا المحوّل أيا من العرفين. يبقى Y الكبير في النتيجة على المقياس الذي أدخلتموه. أما x وy الصغيران فهما نسبتان بلا وحدة. عندما تكون مدخلات XYZ صالحة وغير سالبة، يقع كل إحداثي بين صفر وواحد، ولا يتجاوز x + y الواحد؛ وإذا احتاج الحساب اللاحق إلى إحداثي اللونية الثالث الضمني، فهو z = 1 - x - y. لا تخلطوا بين y الصغيرة وY الكبيرة: الأولى إحداثي لونية مطبّع، والثانية قيمة التحفيز الثلاثي الأصلية المرتبطة بالسطوع. وتذكروا أيضا أن xyY ليس فضاء متجانسا إدراكيا، ولذلك لا تعني المسافات الهندسية المتساوية على مخطط xy بالضرورة فروقا بصرية متساوية. استخدموا التحويل لتبادل الإحداثيات القياسي أو الرسم أو القياس أو الحسابات اللونية الوسيطة. أما قياس الفروق الإدراكية فيتطلب الانتقال إلى فضاء مناسب مثل CIELAB بعد تطبيق قواعد النقطة البيضاء والتكييف اللازمة.
حالات الاستخدام
رسم لون مقاس
حوّلوا خرج XYZ من مقياس الطيف الضوئي إلى إحداثيي x وy لمخطط CIE 1931 مع الاحتفاظ بالسطوع.
مقارنة اللونية عند درجات سطوع مختلفة
طبّعوا قياسات XYZ ذات المقاييس المتناسبة لمقارنة إحداثيات اللونية بصورة مستقلة عن Y.
إعداد البيانات اللونية
حوّلوا سجلات XYZ إلى تمثيل xyY الذي تتوقعه برامج الإضاءة أو الشاشات أو التصوير أو المعايرة.
الأسئلة الشائعة
ما تكلفة التحويل؟
سعر API هو $0.002 لكل طلب. أما إصدار المتصفح فمجاني.
ما مقياس XYZ الذي ينبغي استخدامه؟
يصح أي مقياس متسق. استخدموا المقياس نفسه لـ X وY وZ؛ ويحتفظ Y الكبير في النتيجة بذلك المقياس.
لماذا يُرفض إدخال XYZ المكوّن كله من أصفار؟
تقسم المعادلات على X + Y + Z. يكون هذا المجموع صفرا للمثير الصفري بالكامل، ولذلك لا تكون اللونية معرّفة رياضيا.
هل ينفذ هذا المحوّل تكييفا لونيا؟
لا. إنه يطبّع XYZ إلى إحداثيي xy ويحفظ Y فقط؛ ولا يغير النقاط البيضاء أو شروط الراصد.
لماذا تختلف y الصغيرة عن Y الكبيرة؟
تمثل y الصغيرة نسبة لونية بلا وحدة، بينما تمثل Y الكبيرة مكوّن XYZ الأصلي المرتبط بالسطوع.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/color/xyz-xyy \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"x_value":41.24,"y_value":21.26,"z_value":1.93}'const res = await fetch("https://api.kit.forhosting.com/color/xyz-xyy", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"x_value": 41.24,
"y_value": 21.26,
"z_value": 1.93
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/xyz-xyy",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"x_value": 41.24,
"y_value": 21.26,
"z_value": 1.93
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/xyz-xyy", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"x_value":41.24,"y_value":21.26,"z_value":1.93}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"x_value":41.24,"y_value":21.26,"z_value":1.93}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/xyz-xyy", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"x_value": 41.24,
"y_value": 21.26,
"z_value": 1.93
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.xyz_xyy",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |