डिजिटल छवि को पिक्सेल के 2D सरणी के रूप में संग्रहीत किया जाता है और एक पिक्सेल डिजिटल छवि का सबसे छोटा तत्व होता है।
प्रत्येक पिक्सेल में अल्फा, लाल, हरे, नीले मान के मान होते हैं और प्रत्येक रंग का मान 0 से 255 के बीच होता है जो 8 बिट (2^8) की खपत करता है।
ARGB मानों को स्मृति के 4 बाइट्स में उसी क्रम में (दाएं से बाएं) 0-7 बिट्स पर नीले मान के साथ, 8-15 बिट्स पर हरा मान, 16-23 बिट्स पर लाल मान और 24-31 पर अल्फा में संग्रहीत किया जाता है। बिट्स।
छवि की पिक्सेल सामग्री (ARGB मान) प्राप्त करना -
छवि से पिक्सेल मान प्राप्त करने के लिए -
-
छवि में प्रत्येक पिक्सेल के माध्यम से लूप करें। यानी छवि की ऊंचाई और चौड़ाई को पार करते हुए नेस्टेड लूप चलाएं।
-
getRGB() विधि का उपयोग करके हर बिंदु पर पिक्सेल मान प्राप्त करें।
-
पिक्सेल मान को पैरामीटर के रूप में पास करके कलर ऑब्जेक्ट को इंस्टेंट करें।
-
क्रमशः getRed (), getGreen () और getBlue () विधियों का उपयोग करके लाल, हरा, नीला मान प्राप्त करें।
उदाहरण
जावा के बाद, उदाहरण एक छवि के प्रत्येक पिक्सेल की सामग्री को पढ़ता है और एक फ़ाइल में RGB मान लिखता है -
import java.io.File; import java.io.FileWriter; import java.awt.Color; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; public class GetPixels { public static void main(String args[])throws Exception { FileWriter writer = new FileWriter("D:\\Images\\pixel_values.txt"); //Reading the image File file= new File("D:\\Images\\cat.jpg"); BufferedImage img = ImageIO.read(file); for (int y = 0; y < img.getHeight(); y++) { for (int x = 0; x < img.getWidth(); x++) { //Retrieving contents of a pixel int pixel = img.getRGB(x,y); //Creating a Color object from pixel value Color color = new Color(pixel, true); //Retrieving the R G B values int red = color.getRed(); int green = color.getGreen(); int blue = color.getBlue(); writer.append(red+":"); writer.append(green+":"); writer.append(blue+""); writer.append("\n"); writer.flush(); } } writer.close(); System.out.println("RGB values at each pixel are stored in the specified file"); } }
आउटपुट
RGB values at each pixel are stored in the specified file
आप शिफ्ट ऑपरेटरों का उपयोग करके पिक्सेल से RGB मान भी प्राप्त कर सकते हैं -
ऐसा करने के लिए -
-
दाएं, प्रत्येक रंग की शुरुआती स्थिति में शिफ्ट करें यानी लाल रंग के लिए अल्फा 16 के लिए 24, आदि।
-
शिफ्ट राइट ऑपरेशन अन्य चैनलों के मूल्यों को प्रभावित कर सकता है, इससे बचने के लिए, आपको बिटवाइज़ और 0Xff के साथ संचालन करने की आवश्यकता है। यह वेरिएबल को अंतिम 8 बिट्स को छोड़कर बाकी सभी बिट्स को अनदेखा कर देता है।
int p = img.getRGB(x, y); //Getting the A R G B values from the pixel value int a = (p>>24)&0xff; int r = (p>>16)&0xff; int g = (p>>8)&0xff; int b = p&0xff;