2011-10-24 13 views
5

मैं एक छवि फ़ाइल कैसे ले सकता हूं और इसे रास्टर में परिवर्तित कर सकता हूं और उसके बाद पिक्सेल द्वारा अपने डेटा (आरबीजी मूल्य) पिक्सेल तक पहुंच सकता हूं?मैं एक छवि फ़ाइल कैसे ले सकता हूं और इसे रास्टर में परिवर्तित कर सकता हूं और फिर अपने डेटा तक पहुंच सकता हूं?

उत्तर

2
BufferedImage img = ImageIO.read(new File("lol")); 
int rgb = img.getRGB(x, y); 

Color c = new Color(rgb); 

अब आप विभिन्न मूल्यों

पाने के लिए Color.getRed(), getGreen(), getBlue() और getAlpha() का उपयोग कर सकते
1

उपयोग ImageIO.read एक BufferedImage के रूप में छवि फ़ाइल को पढ़ने के लिए, और फिर छवि Raster प्राप्त करने के लिए getData विधियों में से एक का उपयोग करें। और उसमें, आपको पिक्सेल डेटा प्राप्त करने के तरीके मिलेंगे।

2
BufferedImage image = ImageIO.read(new File(myFilename)); 
int pixel = image.getRGB(0, 0); // Top left pixel. 
// Access the color components, valued 0-255. 
int alpha = (pixel >>> 24) & 0xff; // If applicable to image format. 
int r = (pixel >>> 16) & 0xff; 
int g = (pixel >>> 8) & 0xff; 
int b = pixel & 0xff; 

[संपादित करें] ध्यान दें कि @ Sibbo के जवाब सही है और आसानी से Color class color accessor methods उपयोग करता है; हालांकि, मैंने जो बिट मैनिप्ल्यूशन के माध्यम से सीधे रंगों को निकाला है, उतना ही तेज़ होगा क्योंकि यह बार-बार कन्स्ट्रक्टर कॉल के ओवरहेड से बचाता है।

+0

पूर्णांक r = (पिक्सेल >>> 16) & 0xff; int जी = (पिक्सेल >>> 8) & 0xff; int बी = पिक्सेल & 0xff; कोड की ये पंक्तियां क्या करती हैं? और & opereator या 0xff माध्य – lancegerday

+0

@ लांसगर: क्या रेखाएं [समग्र आरजीबीए "पिक्सेल" मान] से अलग रंग मान (आर, जी, बी, ए) निकालें (http://en.wikipedia.org/विकी/RGBA_color_space) ताकि आप आसानी से उन्हें व्यक्तिगत रूप से 0 और 255 के बीच मानों के रूप में देख सकें। – maerics

1

rgb मूल्यों आप एक रेखापुंज में छवि बदल पूरा करने के बाद

1

उपयोग इसका उपयोग न करें का उपयोग rasters .getData विधि:

Image img.getRGB(x, y); 

Color c = new Color(rgb); 
संबंधित मुद्दे

 संबंधित मुद्दे