OKLCH রূপান্তরকারী ও প্যালেট নির্মাতা

OKLCH, হেক্স, RGB আর HSL-এর মধ্যে রূপান্তর করুন, আর এমন র‍্যাম্প বানান যা দেখতে সমান থাকে — কারণ হিউ ঘোরার সময় লাইটনেস আর ক্রোমা ধরে রাখা হয়। sRGB-র বাইরের রং ম্যাপ হয় ক্রোমা কমিয়ে, চ্যানেল ক্লিপ করে নয় — তফাতটা এই যে আপনার বেগুনি বেগুনিই থাকে কি না।

হেক্স, rgb(), hsl() বা oklch()।

    

OKLCH-এ লাইটনেসের মানে কেন সত্যিই আছে

HSL-এ লাইটনেস স্থির রেখে হিউ বদলালে রংটি কতটা উজ্জ্বল দেখায় তা-ই বদলে যায়: ৫০%-এ হলুদ, ৫০%-এর নীলের চেয়ে অনেক বেশি উজ্জ্বল পড়ে — তাই যত সাবধানেই ফাঁক রাখুন, HSL র‍্যাম্প অসমান দেখায়। OKLab বানানো হয়েছে উপলব্ধির তথ্যের সঙ্গে মিলিয়ে, তাই তার লাইটনেস অক্ষ চোখ যা বলে তা-ই অনুসরণ করে। L আর C ধরে রেখে H ঘোরান — প্রতিটি সোয়াচ একই দৃশ্য-ভার বহন করবে। HSL-এর বদলে এখানে প্যালেট বানানোর গোটা কারণ এটাই।

আসল ব্যাপারটা গামুট ম্যাপিং

অনেক OKLCH মানেরই sRGB-তে কোনো সমতুল্য নেই, আর সহজ সমাধানটা হলো প্রতিটি চ্যানেলকে সীমার ভিতরে চেপে দেওয়া। তাতে হিউ চোখে পড়ার মতো সরে যায়: টকটকে বেগুনি চ্যানেল ধরে ধরে ক্লিপ করলে নীলের দিকে গড়িয়ে যায়। লাইটনেস আর হিউ ধরে রেখে শুধু ক্রোমা কমালে রংটি চেনা যায় নিজের মতোই, আর যা যায় তা কেবল সেই সম্পৃক্তি যা পর্দা এমনিতেও দেখাতে পারত না। এই পাতা CSS Color 4-এর অ্যালগরিদম ব্যবহার করে — ক্রোমার ওপর বাইনারি সন্ধান, আর ক্লিপ করা ফল কমানো রঙের থেকে একটি জাস্ট-নোটিসেবল ডিফারেন্সের ভিতরে এলেই তা মেনে নেওয়া।

একটি রেফারেন্সের সঙ্গে মিলিয়ে দেখা

এই রূপান্তরগুলো একটি স্বাধীন বাস্তবায়নের সঙ্গে চার হাজার রঙের গ্রিডে মিলিয়ে দেখা হয়েছে: লাইটনেস আর ক্রোমা মেলে দশ লক্ষ ভাগের এক ভাগ পর্যন্ত, হিউ ডিগ্রির দশ হাজার ভাগের এক ভাগ পর্যন্ত, আর প্রতিটি হেক্স মান হুবহু ফিরে আসে। গামুট ম্যাপিংও একইভাবে চারশো আশিটি গামুট-বহির্ভূত রঙে যাচাই হয়েছে এবং সবচেয়ে খারাপ ক্ষেত্রেও ২৫৫-এর এক ভাগের মধ্যে থেকেছে। যাঁরা OKLCH পড়েন তাঁরা ভুল ম্যাট্রিক্স ধরে ফেলেন, তাই যাচাইটা কীভাবে হলো সেটা বলা দরকার মনে হলো।

আউটপুটটি কাজে লাগানো

কাস্টম প্রপার্টিগুলো লেখা হয় OKLCH-এ, আর পাশে মন্তব্যে থাকে হেক্স — কারণ রিভিউয়ে ঠিক এই জোড়াটাই দরকার: যে মানটি আপনার বিল্ড পাঠাবে, আর যে মানটি আপনি অন্য যেকোনো জায়গায় পেস্ট করতে পারবেন। আজ ব্যবহারে থাকা সব ব্রাউজারই OKLCH সিনট্যাক্স বোঝে; যদি এমন কোনোটিকে এখনো সমর্থন করেন যেটি বোঝে না, ওই মন্তব্যটিই আপনার ফলব্যাক।

FAQ

ক্রোমা ০.৪-এ থেমে যায় কেন?

কারণ sRGB-তে কিছুই এর কাছাকাছি যায় না। sRGB-র সবচেয়ে সম্পৃক্ত রং নীল, প্রায় ০.৩১৩, আর স্লাইডার ইচ্ছে করেই তার ওপারে যায় — যাতে দেখতে পান কী গামুটের বাইরে পড়ে আর কীভাবে ফিরে ম্যাপ হয়।

এখানে জাস্ট-নোটিসেবল ডিফারেন্স মানে কী?

OKLab-এ ০.০২ ডেল্টা E — CSS Color 4 এই সীমাই ব্যবহার করে। এর নিচে ক্লিপিং আর ক্রোমা কমানো আলাদা করা যায় না, তাই অ্যালগরিদম ক্লিপ করা রংটাই নেয় আর বাড়তি ক্রোমা রেখে দেয়।

এটি কি P3 বা Rec2020 সামলায়?

এখনো নয়। এখানকার সবকিছুই sRGB ধরে চলে, গামুট সতর্কতাগুলোও তা-ই বোঝায়। বড় গামুটের জন্য নিজস্ব প্রাইমারি আর আরেক সেট ম্যাট্রিক্স লাগবে।

এর কিছু কি কোথাও পাঠানো হয়?

না। সব রূপান্তর এই পাতাতেই হয়।

বানিয়েছে GO AI দল। CSS clamp() ক্যালকুলেটর · সব বিনামূল্যের সরঞ্জাম