2011-04-02 7 views
5

ठीक है तो मैं एक प्रोग्राम है जो एक छवि में ले जाता है पर काम कर रहा हूँ, एक सरणी में पिक्सल के एक ब्लॉक को अलग कर देता है, और फिर प्रत्येक के लिए प्रत्येक व्यक्ति के आरजीबी मूल्य हो जाता है वापस करने के लिए एक कच्चे नकारात्मक rgb पूर्णांक मूल्य कन्वर्ट उस सरणी में पिक्सेल।एक 3 नंबर rgb मूल्य

जब मैं इस

//first pic of image 
//just a test 
int pix = myImage.getRGB(0,0) 
System.out.println(pix); 

यह पता थूक -16106634

मैं (ए, बी आर, जी) इस पूर्णांक मूल्य

से लाभ प्राप्त करने की आवश्यकता है वहाँ एक सूत्र है , alg, विधि?

उत्तर

11

BufferedImage.getRGB(int x, int y) विधि हमेशा TYPE_INT_ARGB रंग मॉडल में एक पिक्सेल देता है। तो आप बस, प्रत्येक रंग के लिए सही बिट्स को अलग करने की जरूरत है इस तरह: (कम से

int a = (pix >> 24) & 0xFF; 

वैकल्पिक रूप से आप सुविधा के लिए Color(int rgba, boolean hasalpha) निर्माता का उपयोग कर सकते हैं:

int pix = myImage.getRGB(0, 0); 
int r = (pix >> 16) & 0xFF; 
int g = (pix >> 8) & 0xFF; 
int b = pix & 0xFF; 

आप अल्फा घटक चाहते हैं तो प्रदर्शन की लागत)।

+0

धन्यवाद! यह पूरी तरह से –

+0

कूल काम किया। सुनिश्चित करें कि आपने बिट दिशाओं को सही दिशा में कॉपी किया है ... मैंने वास्तव में पहली बार एक टाइपो बनाया और इसे एक संपादन में ठीक किया। – WhiteFang34

2
int pix = myImage.getRGB(0,0); 
Color c = new Color(pix,true); // true for hasalpha 
int red = c.getRed(); 
int green = c.getGreen(); 
int blue = c.getBlue(); 
संबंधित मुद्दे