2008-10-21 18 views
14

जावा (आरजीबी, एचएसवी और लैब) में रंग मॉडल के बीच कनवर्ट करने का कोई आसान तरीका है।जेनरेटिंग स्पेक्ट्रम कलर पैलेट

मान लिया जाये कि आरजीबी रंग मॉडल:

  • मैं ब्लैक बॉडी स्पेक्ट्रम रंग पैलेट गणना कैसे करते हैं? मैं इसे एक हीटमैप चार्ट के लिए उपयोग करना चाहता हूं।
  • एकल तरंगदैर्ध्य स्पेक्ट्रम के बारे में कैसे?

संपादित करें: मैंने पाया कि ColorSpace वर्ग आरजीबी/CIE और कई अन्य रंग मॉडल के बीच रूपांतरण के लिए इस्तेमाल किया जा सकता।

+0

धन्यवाद, सभी जवाब अच्छे हैं। मैंने उस दृष्टिकोण को प्रतिबिंबित किया जो वास्तव में उपयोग किए जाने वाले दृष्टिकोण को दर्शाता है (ढाल काला-लाल-पीला-सफेद) – ddimitrov

+0

कुछ संबंधित क्यूए मेरा मूल्यवान दिखने वाला है: [दृश्यमान स्पेक्ट्रम के आरजीबी मूल्य] (http://stackoverflow.com/a/22681410/2521214) और [स्टार बीवी रंग सूचकांक स्पष्ट आरजीबी रंग] (http://stackoverflow.com/a/22630970/2521214) – Spektre

उत्तर

2

आप एचएसवी रंग-मॉडल का उपयोग करके ऐसा पैलेट बना सकते हैं। एक बार जब आप एचएसवी को आरजीबी कोड में जगह लेते हैं और कुछ मिनटों के लिए संख्याओं के साथ खेलते हैं तो यह आसान होता है।

हालांकि, मुझे लगता है कि यह थोड़ा सा पैलेट उत्पन्न करने के लिए आपके प्रोजेक्ट में कोड जोड़ने के लायक नहीं है।

फ़ाइल से आपको आवश्यक पैलेट निकालने के लिए यह बहुत आसान और कम काम है और उन्हें एक स्थिर सरणी के रूप में जोड़ें।

फ़ोटोशॉप चलो आप पैलेट संपादित करते हैं और प्रीसेट के रूप में एक बहुत अच्छे काले शरीर पैलेट के साथ आता है।

आप इन्हें केवल एक .act फ़ाइल के रूप में सहेज सकते हैं। फ़ाइल ही एक साधारण 256 रंग और 3 बाइट फ़ाइल है (ऑर्डर पढ़ा जाता है, हरा, नीला। प्रति चैनल 8 बिट्स)।

4

शायद मैं आपके प्रश्न को समझ नहीं रहा हूं, लेकिन आप वास्तव में एक आरजीबी आउटपुट डिवाइस से एक वास्तविक ब्लैक-बॉडी स्पेक्ट्रम उत्पन्न नहीं कर सकते हैं। सीमित रंग गामट एक मुद्दा होगा, अगर कुछ और नहीं। यदि आप चाहते हैं कि कुछ ऐसा है जो दृष्टिहीन रूप से ब्लैक-बॉडी स्पेक्ट्रम जैसा दिखता है, तो शायद यह बहुत आसान है।

अनुमान के अनुसार, (आर, जी, बी) (0,0,0) से (255,0,0), फिर (255,255,0), फिर (255,255,255) तक रैंप करें। इससे आपको नारंगी लाल, नारंगी, सफेद संक्रमण के लिए लाल रंग मिल जाएगा।

यदि आप कुछ और वैज्ञानिक चाहते हैं, तो black body radiation पर विकिपीडिया लेख रंग बनाम तापमान के कुछ भूखंड हैं। एक बार जब आप सीआईई निर्देशांक को समझ लेंगे, तो आप उन्हें अपने पसंदीदा रंग स्थान में आरजीबी में अनुवाद कर सकते हैं।

संपादित करें: मिला कुछ अन्य ऑनलाइन संदर्भ: What color is the Sun? What color is a blackbody?

+0

क्षमा करें, मेरा मतलब मॉनीटर के रंग स्थान में बीबीएस का प्रक्षेपण था (जिस तरह की ढाल है heatmaps के लिए इस्तेमाल किया)। लिंक दिलचस्प हैं। – ddimitrov

20

जावा HSB रूपांतरण के लिए निर्मित आरजीबी गया है। जब भी मैं जावा में रंग की एक त्वरित चटाई की जरूरत है मैं तो बस ऐसा करते हैं:

public Color[] generateColors(int n) 
{ 
    Color[] cols = new Color[n]; 
    for(int i = 0; i < n; i++) 
    { 
     cols[i] = Color.getHSBColor((float) i/(float) n, 0.85f, 1.0f); 
    } 
    return cols; 
} 

यह एक त्वरित और गंदी हैक (मैं अपने अनुप्रयोग के लिए 'जादू' संख्या tweak होगा) है, लेकिन मेरे साधारण के लिए यह उत्पन्न करता है एक अच्छा उज्ज्वल सुखद फूस।

+1

धन्यवाद। यह मेरे इंद्रधनुष पैलेट की जरूरतों को हल करता है। – ddimitrov

+4

2 साल बाद, इससे मुझे भी मदद मिली। धन्यवाद। –

-1

यह एएस 3 में एचएसएल रंग वर्ग बनाने का एक अच्छा तरीका है।

/** 
* Generate a BitmapData HSL color square (n x n) of hue 
* At a low n dimension you get cool blocky color palettes (e.g. try n=10) 
*/ 
function generateColorSquare(n:uint, hue:uint):BitmapData 
      { 
       var bd:BitmapData = new BitmapData(n, n, false, 0xFFFFFF); 
       for (var i:uint=n*n; i > 0; i--) 
       { 
        bd.setPixel(i % n, Math.floor(i/n), HSBColor.convertHSBtoRGB(hue, i/(n*n), (1/n) * (i % n))); 
       } 
       return bd; 
      } 
0

आप नीचे दिए गए कोड का उपयोग कर इस रंग स्पेक्ट्रम https://i.stack.imgur.com/ktLmt.jpg

उत्पन्न कर सकते हैं:

public void render(Screen screen) { 
    int green = 255; 
    int red = 0; 

    for (int i = 0; i <= 255 * 2; i++) { 
     int rate = i/255; 

     screen.fillRect((x + (i * width)/6), y, width, height, new Color(red, green, 0)); 

     red += 1 - rate; 
     green -= rate; 
    } 
} 
संबंधित मुद्दे