कलर ब्लाइंडनेस सिम्युलेटर - रंग एक्सेसिबिलिटी टेस्ट ऑनलाइन
प्रोटानोपिया, ड्यूटेरानोपिया और ट्रिटानोपिया वाले लोगों को रंग कैसे दिखते हैं सिम्युलेट करें। एक्सेसिबल वेब डिज़ाइन के लिए WCAG कंट्रास्ट रेशियो जांचें।
अक्सर पूछे जाने वाले प्रश्न
कलर ब्लाइंडनेस सिम्युलेटर क्या है?
कलर ब्लाइंडनेस सिम्युलेटर एक ऑनलाइन टूल है जो दिखाता है कि रंग दृष्टि दोष (CVD) वाले लोगों को रंग और छवियां कैसी दिखती हैं। यह वैज्ञानिक रूप से मान्य एल्गोरिदम का उपयोग करके रंगों को परिवर्तित करता है, जिससे डिज़ाइनरों और डेवलपर्स को समझने में मदद मिलती है कि उनकी दृश्य सामग्री लगभग 8% पुरुषों और 0.5% महिलाओं द्वारा कैसे देखी जाती है जिन्हें किसी प्रकार का रंग अंधापन है।
इस टूल का उपयोग कैसे करें?
इस टूल में दो मोड हैं। रंग मोड: HEX मान, RGB मान या कलर पिकर का उपयोग करके फोरग्राउंड और बैकग्राउंड रंग दर्ज करें, और टूल WCAG कंट्रास्ट अनुपात के साथ सभी 8 प्रकार की रंग दृष्टि दोष के तहत ये रंग कैसे दिखते हैं तुरंत दिखाता है। इमेज मोड: एक छवि अपलोड करें (ड्रैग एंड ड्रॉप या फ़ाइल ब्राउज़), CVD प्रकार चुनें, और मूल के साथ-साथ सिम्युलेटेड संस्करण देखें। आप दस्तावेज़ीकरण या प्रस्तुतियों के लिए सिम्युलेटेड छवि डाउनलोड कर सकते हैं।
क्या मेरा डेटा सुरक्षित है? क्या यह सर्वर पर भेजा जाता है?
आपका डेटा 100% सुरक्षित है और कभी भी आपके ब्राउज़र से बाहर नहीं जाता। सभी रंग गणनाएं, WCAG कंट्रास्ट जांच और इमेज प्रोसेसिंग पूरी तरह से JavaScript और Canvas API का उपयोग करके क्लाइंट साइड पर की जाती है। कोई भी रंग या छवि किसी भी सर्वर पर प्रेषित नहीं होती, जिससे यह टूल प्रोप्राइटरी डिज़ाइन, गोपनीय ब्रांड एसेट और संवेदनशील दृश्य सामग्री के परीक्षण के लिए सुरक्षित है।
रंग दृष्टि दोष के 8 प्रकार क्या हैं?
8 प्रकार हैं: प्रोटानोपिया (लाल शंकु नहीं, लाल गहरे दिखते हैं), ड्यूटेरानोपिया (हरे शंकु नहीं, सबसे आम द्विवर्णता), ट्रिटानोपिया (नीले शंकु नहीं, नीले-पीले का भ्रम), प्रोटानोमेली (लाल संवेदनशीलता कम), ड्यूटेरानोमेली (हरी संवेदनशीलता कम, ~5% पुरुषों को प्रभावित करने वाला सबसे आम CVD), ट्रिटानोमेली (नीली संवेदनशीलता कम, बहुत दुर्लभ), एक्रोमैटोप्सिया (पूर्ण रंग अंधापन, केवल ग्रेस्केल दिखता है), और एक्रोमैटोमेली (आंशिक रंग अंधापन, गंभीर रूप से कम रंग धारणा)।
WCAG कंट्रास्ट चेकर कलर ब्लाइंडनेस सिम्युलेशन के साथ कैसे काम करता है?
टूल आपके फोरग्राउंड और बैकग्राउंड रंगों के बीच मानक WCAG 2.1 कंट्रास्ट अनुपात की गणना करता है, फिर प्रत्येक CVD सिम्युलेशन लागू करने के बाद कंट्रास्ट की पुनर्गणना करता है। यह उन मामलों को प्रकट करता है जहां रंग जोड़ी सामान्य दृष्टि के लिए WCAG मानकों को पास करती है लेकिन रंग दृष्टि दोष वाले लोगों के लिए विफल होती है -- वास्तव में सुलभ डिज़ाइन के लिए एक महत्वपूर्ण अंतर्दृष्टि।
यह टूल कौन से सिम्युलेशन एल्गोरिदम का उपयोग करता है?
यह टूल पीयर-रिव्यूड, वैज्ञानिक रूप से मान्य एल्गोरिदम का उपयोग करता है: द्विवर्णता प्रकारों (प्रोटानोपिया, ड्यूटेरानोपिया, ट्रिटानोपिया) के लिए Brettel, Vienot & Mollon (1997) और असामान्य त्रिवर्णता प्रकारों (प्रोटानोमेली, ड्यूटेरानोमेली, ट्रिटानोमेली) के लिए Machado, Oliveira & Fernandes (2009)। एक्रोमैटोप्सिया ITU-R BT.709 ल्यूमिनेंस वेटिंग का उपयोग करता है। सटीकता के लिए सभी परिवर्तन लीनियर RGB कलर स्पेस में किए जाते हैं।
क्या मैं इस टूल से छवियों का परीक्षण कर सकता हूँ?
हाँ। इमेज टैब आपको 4096x4096 पिक्सेल तक की छवियां (JPG, PNG, WebP, GIF) अपलोड करने की अनुमति देता है। टूल पिक्सेल-स्तरीय CVD सिम्युलेशन लागू करने के लिए Canvas API का उपयोग करता है, मूल और सिम्युलेटेड छवियों को साथ-साथ दिखाता है। आप एक्सेसिबिलिटी ऑडिट या दस्तावेज़ीकरण में उपयोग के लिए सिम्युलेटेड छवि डाउनलोड कर सकते हैं।
-anopia और -anomaly प्रकारों में क्या अंतर है?
प्रत्यय "-anopia" का अर्थ है शंकु प्रकार की पूर्ण अनुपस्थिति (द्विवर्णता), जबकि "-anomaly" का अर्थ है कम संवेदनशीलता (असामान्य त्रिवर्णता)। उदाहरण के लिए, प्रोटानोपिया का अर्थ है कि लाल शंकु बिल्कुल नहीं हैं, जबकि प्रोटानोमेली का अर्थ है कि लाल शंकु मौजूद हैं लेकिन संवेदनशीलता में बदलाव है। एनोमली प्रकार आमतौर पर एनोपिया प्रकारों की तुलना में हल्के और अधिक सामान्य होते हैं।
कोड उदाहरण
// Color Blindness Simulator - JavaScript Implementation
/**
* sRGB to Linear RGB conversion
*/
function srgbToLinear(c) {
const v = c / 255;
return v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
}
function linearToSrgb(c) {
const v = Math.max(0, Math.min(1, c));
return Math.round(
(v <= 0.0031308 ? 12.92 * v : 1.055 * Math.pow(v, 1 / 2.4) - 0.055) * 255
);
}
/**
* CVD simulation matrices (Brettel 1997 / Machado 2009)
* Each is a 3x3 matrix stored as flat array [row-major]
*/
const CVD_MATRICES = {
protanopia: [
0.152286, 1.052583, -0.204868,
0.114503, 0.786281, 0.099216,
-0.003882, -0.048116, 1.051998,
],
deuteranopia: [
0.367322, 0.860646, -0.227968,
0.280085, 0.672501, 0.047413,
-0.011820, 0.042940, 0.968881,
],
tritanopia: [
1.255528, -0.076749, -0.178779,
-0.078411, 0.930809, 0.147602,
0.004733, 0.691367, 0.303900,
],
achromatopsia: [
0.2126, 0.7152, 0.0722,
0.2126, 0.7152, 0.0722,
0.2126, 0.7152, 0.0722,
],
};
/**
* Simulate color vision deficiency for a single RGB color
* @param {number} r - Red (0-255)
* @param {number} g - Green (0-255)
* @param {number} b - Blue (0-255)
* @param {string} cvdType - CVD type key
* @param {number} severity - 0.0 to 1.0
* @returns {number[]} Simulated [r, g, b]
*/
function simulateColor(r, g, b, cvdType, severity = 1.0) {
const matrix = CVD_MATRICES[cvdType];
if (!matrix) throw new Error(`Unknown CVD type: ${cvdType}`);
// Convert to linear
const lr = srgbToLinear(r);
const lg = srgbToLinear(g);
const lb = srgbToLinear(b);
// Apply matrix
const sr = matrix[0] * lr + matrix[1] * lg + matrix[2] * lb;
const sg = matrix[3] * lr + matrix[4] * lg + matrix[5] * lb;
const sb = matrix[6] * lr + matrix[7] * lg + matrix[8] * lb;
// Lerp with original for severity
const fr = lr * (1 - severity) + sr * severity;
const fg = lg * (1 - severity) + sg * severity;
const fb = lb * (1 - severity) + sb * severity;
return [linearToSrgb(fr), linearToSrgb(fg), linearToSrgb(fb)];
}
/**
* Calculate WCAG 2.1 contrast ratio
*/
function getContrastRatio(fg, bg) {
const lum = (r, g, b) =>
0.2126 * srgbToLinear(r) + 0.7152 * srgbToLinear(g) + 0.0722 * srgbToLinear(b);
const l1 = lum(...fg);
const l2 = lum(...bg);
const lighter = Math.max(l1, l2);
const darker = Math.min(l1, l2);
return (lighter + 0.05) / (darker + 0.05);
}
/**
* Check WCAG compliance
*/
function checkWCAG(ratio) {
return {
aa: { normalText: ratio >= 4.5, largeText: ratio >= 3 },
aaa: { normalText: ratio >= 7, largeText: ratio >= 4.5 },
};
}
// Usage
const fg = [255, 102, 0]; // Orange
const bg = [255, 255, 255]; // White
console.log("Original contrast:", getContrastRatio(fg, bg).toFixed(2) + ":1");
const cvdTypes = ["protanopia", "deuteranopia", "tritanopia", "achromatopsia"];
for (const type of cvdTypes) {
const simFg = simulateColor(...fg, type);
const simBg = simulateColor(...bg, type);
const ratio = getContrastRatio(simFg, simBg);
const wcag = checkWCAG(ratio);
console.log(`${type}: ${ratio.toFixed(2)}:1 (AA: ${wcag.aa.normalText ? "PASS" : "FAIL"})`);
}