आरजीबी मूल्य को देखते हुए, जैसे 168, 0, 255
, मैं कैसे रंग बनाते हैं (इसे हल्का बनाते हैं) और रंगों का रंग (इसे गहरा बनाते हैं)?
आरजीबी मूल्य को देखते हुए, जैसे 168, 0, 255
, मैं कैसे रंग बनाते हैं (इसे हल्का बनाते हैं) और रंगों का रंग (इसे गहरा बनाते हैं)?
जवाबों:
के अलावा कई विकल्प छायांकन और tinting के लिए:
रंगों के लिए, प्रत्येक घटक को उसके पिछले मूल्य के 1/4, 1/2, 3/4, आदि से गुणा करें। छोटा कारक, गहरा छाया।
टिंट्स के लिए, गणना करें (255 - पिछले मान), 1/4, 1/2, 3/4, आदि से गुणा करें (अधिक से अधिक कारक, हल्का टिंट), और पिछले मान में जोड़ें (प्रत्येक मानते हुए .component एक 8-बिट पूर्णांक है)।
ध्यान दें कि रंग जोड़तोड़ (जैसे कि टिंट और अन्य छायांकन) को रैखिक आरजीबी में किया जाना चाहिए । हालांकि, दस्तावेजों में निर्दिष्ट आरजीबी रंग या छवियों और वीडियो में एन्कोडेड रैखिक आरजीबी में होने की संभावना नहीं है, इस मामले में आरजीबी रंग के प्रत्येक घटक के लिए एक तथाकथित उलटा स्थानांतरण फ़ंक्शन को लागू करने की आवश्यकता है। यह फ़ंक्शन RGB रंग स्थान के साथ बदलता रहता है। उदाहरण के लिए, sRGB कलर स्पेस में (जिसे माना जा सकता है कि RGB कलर स्पेस अनजान है), यह फ़ंक्शन लगभग प्रत्येक sRGB कलर कंपोनेंट (0 से लेकर 1 तक) को 2.2 की पावर तक बढ़ाने के बराबर है। (ध्यान दें कि "रैखिक आरजीबी" आरजीबी रंग का स्थान नहीं है।)
वायलेट जिराफ़ की टिप्पणी "गामा सुधार" के बारे में भी देखें।
आपके रंग मॉडल के आधार पर, गहरा (छायांकित) या हल्का (रंगा हुआ) रंग बनाने के लिए विभिन्न विधियाँ हैं:
RGB
:
छाया करना:
newR = currentR * (1 - shade_factor)
newG = currentG * (1 - shade_factor)
newB = currentB * (1 - shade_factor)
टिंट करने के लिए:
newR = currentR + (255 - currentR) * tint_factor
newG = currentG + (255 - currentG) * tint_factor
newB = currentB + (255 - currentB) * tint_factor
अधिक आम तौर पर, रंग एक रंग के RGB(currentR,currentG,currentB)
साथ एक लेयरिंग के परिणामस्वरूप होता RGBA(aR,aG,aB,alpha)
है:
newR = currentR + (aR - currentR) * alpha
newG = currentG + (aG - currentG) * alpha
newB = currentB + (aB - currentB) * alpha
जहां (aR,aG,aB) = black = (0,0,0)
छायांकन के लिए, और (aR,aG,aB) = white = (255,255,255)
टिनिंग के लिए
HSV
या HSB
:
Value
/ Brightness
या को कम करेंSaturation
Saturation
या कम बढ़ाएँ Value
/Brightness
HSL
:
Lightness
Lightness
एक रंग मॉडल से दूसरे में बदलने के सूत्र मौजूद हैं। अपने प्रारंभिक प्रश्न के अनुसार, यदि आप अंदर हैं RGB
और HSV
उदाहरण के लिए छाया में मॉडल का उपयोग करना चाहते हैं, तो आप बस परिवर्तित कर सकते HSV
हैं, छायांकन कर सकते हैं और वापस परिवर्तित कर सकते हैं RGB
। रूपांतरित करने के लिए सूत्र तुच्छ नहीं हैं, लेकिन इंटरनेट पर पाए जा सकते हैं। आपकी भाषा के आधार पर, यह एक कोर फ़ंक्शन के रूप में भी उपलब्ध हो सकता है:
RGB
लागू करने के लिए वास्तव में सरल होने का लाभ है, लेकिन:
HSV
या HSB
जटिल है, क्योंकि आपको जो चाहिए उसे पाने के लिए दो मापदंडों के साथ खेलना होगा ( Saturation
और Value
/ Brightness
)HSL
मेरे दृष्टिकोण से सबसे अच्छा है:
50%
एक अनछुए ह्यू का मतलब है>50%
इसका मतलब है कि धुंध हल्का है (टिंट)<50%
इसका मतलब है कि ह्यू गहरा है (शेड)Lightness
भाग को बदलकर )मैं वर्तमान में कैनवास और पिक्सेल के साथ प्रयोग कर रहा हूं ... मुझे लग रहा है कि यह तर्क मेरे लिए बेहतर काम करता है।
'टिंट' मान को ऑफ़सेट करने के लिए जोड़ें
var grey = (r + g + b) / 3;
var grey2 = (new_r + new_g + new_b) / 3;
var dr = grey - grey2 * 1;
var dg = grey - grey2 * 1
var db = grey - grey2 * 1;
tint_r = new_r + dr;
tint_g = new_g + dg;
tint_b = new_b _ db;
या कुछ इस तरह का...
rs = r * 0.25
,gs = g * 0.25
,bs = b * 0.25
(है कि एक बहुत अंधेरा छाया है); टिंट (आर टी, जीटी, बीटी):rt = r + (0.25 * (255 - r))
,gt = g + (0.25 * (255 - g))
,bt = b + (0.25 * (255 - b))
(है कि एक बहुत प्रकाश टिंट है)। मैंने इसे एक शांत सरणी के भाग के रूप में किया, जिसने बहुत सारे रंग बनाए और इसने बहुत अच्छा काम किया। उम्मीद है की वो मदद करदे। धन्यवाद पीटर।