में कनवर्ट करें तो BufferedImage
में, आपको एक एकल पूर्णांक प्राप्त होता है जिसमें आरजीबी मान प्रदर्शित होते हैं। अब तक मैं आरजीबी मान प्राप्त करने के लिए निम्न का उपयोग करता हूं:आरजीबी मानों को इंटीजर
// rgbs is an array of integers, every single integer represents the
// RGB values combined in some way
int r = (int) ((Math.pow(256,3) + rgbs[k])/65536);
int g = (int) (((Math.pow(256,3) + rgbs[k])/256) % 256);
int b = (int) ((Math.pow(256,3) + rgbs[k]) % 256);
और अब तक, यह काम करता है।
मैं क्या करने की जरूरत आंकड़ा बाहर कैसे एक पूर्णांक पाने के लिए तो मैं BufferedImage.setRGB()
उपयोग कर सकते हैं, क्योंकि वह उसी प्रकार के डेटा यह मुझे दिया लेता है।
मुझे नहीं लगता कि आपको दूसरी दो पंक्तियों पर एक int की आवश्यकता है। और तीसरी पंक्ति "आरजीबी = ..." होना चाहिए, है ना? –
यह एक एकल पूर्णांक है। एक पूर्णांक में 32 बिट होते हैं। पहले 8 बिट अल्फा मान (जो शून्य है) के लिए हैं। लाल के लिए अगला 8, फिर हरे रंग के लिए अगले 8 और नीले रंग के लिए अगले 8। कोशिश करो। यदि अंतिम आउटपुट आपको प्रारंभिक इनपुट के बराबर करता है तो आप जानते हैं कि रूपांतरण सही तरीके से किया गया था। – camickr
एर्म, मुझे लगता है कि यह रंग गहराई पर निर्भर करेगा। आपका उदाहरण 24-बिट रंग (चैनल प्रति 8 बिट) जैसा दिखता है - क्या यह है कि 'बुफर्ड इमेज' की अपेक्षा क्या है? –