Finding Java Image Pixels Information – ARGB (Alpha, Red, Green Blue)

In digital imaging, a pixel(or picture element) is the smallest item of information in an image. Pixels are normally arranged in a 2-dimensional grid, and are often represented using dots or squares. Each pixel is a sample of an original image, where more samples typically provide more-accurate representations of the original. The intensity of each pixel is variable; in color systems, each pixel has typically three or four components such as red, green, and blue, or cyan, magenta, yellow, and black.

The word pixel is based on a contraction of pix (“pictures”) and el (for “element”); similar formations with el for “element” include the words: voxel and texel. [Wikipedia]

In java 2D images, pixels are arranged in 2 dimensional array. If you take an image of dimension 200×300, there will be a total of 60,000 pixels. Each pixel is represented by a 32 bit integer. 32bit (4Bytes) represent 4 different color information. These color information, called ARGB, stand for Alpha, Red, Green and Blue. Each byte out of 4 Bytes of every pixel represents one of these color information.

In the following tutorial, you will learn

  • How to read image from filesystem
  • How to calculate the image height and width
  • How to loop through each pixel and get pixel info
  • Get alpha (transparency) value from the pixel
  • Get Color info (red, green and blue) from the pixel
  • How to do bit manipulation on an integer

package com.kushal.graphics;

/**
 * @Author Kushal Paudyal
 * www.sanjaal.com/java
 * Last Modified On: 2009-10-21
 *
 * PrintImageARGBPixels.java
 * Reads an image and prints out it's color and alpha
 * information of individual pixels [Alpha, Red, Green Blue]
 */
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class PrintImageARGBPixels {

	public static void main(String args[]) {
		/**
		 * Read a sample image from the filesystem
		 */
		BufferedImage image = readImage("c:/temp/generalImage.jpg");

		/**
		 * Call the method that prints out ARGB color Information.
		 * ARGB = Alpha, Red, Green and Blue
		 */
		printAllARGBDetails(image);
	}

	public static void printAllARGBDetails(BufferedImage image) {
		int width = image.getWidth();
		int height = image.getHeight();
		System.out.println("Image Dimension: Height-" + height + ", Width-"
				+ width);
		System.out.println("Total Pixels: " + (height * width));
		for (int i = 0; i < width; i++) {
			for (int j = 0; j < height; j++) {

				int pixel = image.getRGB(i, j);
				System.out.println("Pixel Location(" + i + "," + j + ")- ["
						+ getARGBPixelData(pixel) + "]");
			}
		}
	}

	/**
	 * Image Pixels are Arrays of Integers [32 bits/4Bytes]
	 * Consider a 32 pixel as 11111111-00110011-00111110-00011110
	 *
	 * First Byte From Left [11111111]= Alpha
	 * Second Byte From Left[00110011]= Red
	 * Third Byte From Left [00111110]= Green
	 * Fourth Byte From Left[00011110]= Blue
	 *
	 * The following method will do a proper bit shift and
	 * logical AND operation to extract the correct values
	 * of different color/alpha components.
	 *
	 */
	public static String getARGBPixelData(int pixel) {
		String pixelARGBData = "";
		/**
		 * Shift all pixels 24 bits to the right.
		 * Do a logical and with 0x000000FF
		 * i.e. 0000 0000 0000 0000 0000 0000 1111 1111
		 * You will get the alpha value for the pixel
		 */
		int alpha = (pixel >> 24) & 0x000000FF;

		/**
		 * Shift all pixels 16 bits to the right.
		 * Do a logical and with 0x000000FF
		 * i.e. 0000 0000 0000 0000 0000 0000 1111 1111
		 * You will get the red value for the pixel
		 */

		int red = (pixel >> 16) & 0x000000FF;

		/**
		 * Shift all pixels 8 bits to the right.
		 * Do a logical and with 0x000000FF
		 * i.e. 0000 0000 0000 0000 0000 0000 1111 1111
		 * You will get the green value for the pixel
		 */
		int green = (pixel >>8 ) & 0x000000FF;

		/**
		 * Dont do any shift.
		 * Do a logical and with 0x000000FF
		 * i.e. 0000 0000 0000 0000 0000 0000 1111 1111
		 * You will get the blue value for the pixel
		 */
		int blue = (pixel) & 0x000000FF;

		pixelARGBData = "Alpha: " + alpha + ", " + "Red: " + red + ", "
				+ "Green: " + green + ", " + "Blue: " + blue;

		return pixelARGBData;
	}

	/**
	 * This method reads an image from the file
	 * @param fileLocation -- > eg. "C:/testImage.jpg"
	 * @return BufferedImage of the file read
	 */
	public static BufferedImage readImage(String fileLocation) {
		BufferedImage img = null;
		try {
			img = ImageIO.read(new File(fileLocation));
		} catch (IOException e) {
			e.printStackTrace();
		}
		return img;
	}

	/*
	 * SANJAAL CORPS MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
	 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
	 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
	 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SANJAAL CORPS SHALL NOT BE LIABLE FOR
	 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
	 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
	 *
	 * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE
	 * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE
	 * PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT
	 * NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE
	 * SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE
	 * SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE
	 * PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). SANJAAL CORPS
	 * SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR
	 * HIGH RISK ACTIVITIES.
	 */
}

Sample Image Used In This Program (You can use any of your own).

Output of this program on a sample Image:
Note that I have shortened the output by removing many lines from in between. This is because I took a 122×122 image and there were a total of 14884 pixel info printed on the screen.

The complete  output file is available here.

Image Dimension: Height-122, Width-122
Total Pixels: 14884
Pixel Location(0,0)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(0,1)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(0,2)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(0,3)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(0,4)- [Alpha: 255, Red: 255, Green: 254, Blue: 255]
Pixel Location(0,5)- [Alpha: 255, Red: 255, Green: 254, Blue: 255]
Pixel Location(0,6)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(0,7)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(0,8)- [Alpha: 255, Red: 254, Green: 255, Blue: 255]
Pixel Location(0,9)- [Alpha: 255, Red: 254, Green: 255, Blue: 255]
Pixel Location(0,10)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(0,11)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(0,12)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(0,13)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(0,14)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(0,15)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(0,16)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
.
.
.
Pixel Location(90,26)- [Alpha: 255, Red: 216, Green: 217, Blue: 219]
Pixel Location(90,27)- [Alpha: 255, Red: 219, Green: 215, Blue: 216]
Pixel Location(90,28)- [Alpha: 255, Red: 216, Green: 216, Blue: 216]
Pixel Location(90,29)- [Alpha: 255, Red: 210, Green: 214, Blue: 213]
Pixel Location(90,30)- [Alpha: 255, Red: 206, Green: 210, Blue: 209]
Pixel Location(90,31)- [Alpha: 255, Red: 219, Green: 212, Blue: 202]
Pixel Location(90,32)- [Alpha: 255, Red: 235, Green: 205, Blue: 179]
Pixel Location(90,33)- [Alpha: 255, Red: 221, Green: 167, Blue: 121]
Pixel Location(90,34)- [Alpha: 255, Red: 213, Green: 132, Blue: 66]
Pixel Location(90,35)- [Alpha: 255, Red: 220, Green: 130, Blue: 52]
Pixel Location(90,36)- [Alpha: 255, Red: 212, Green: 133, Blue: 56]
Pixel Location(90,37)- [Alpha: 255, Red: 196, Green: 139, Blue: 72]
Pixel Location(90,38)- [Alpha: 255, Red: 185, Green: 161, Blue: 115]
Pixel Location(90,39)- [Alpha: 255, Red: 206, Green: 203, Blue: 160]
Pixel Location(90,40)- [Alpha: 255, Red: 207, Green: 213, Blue: 153]
Pixel Location(90,41)- [Alpha: 255, Red: 174, Green: 189, Blue: 120]
Pixel Location(90,42)- [Alpha: 255, Red: 160, Green: 183, Blue: 113]
Pixel Location(90,43)- [Alpha: 255, Red: 124, Green: 155, Blue: 114]
.
.
.
Pixel Location(121,105)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,106)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,107)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,108)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,109)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,110)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,111)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,112)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,113)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,114)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,115)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,116)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,117)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,118)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,119)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,120)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
Pixel Location(121,121)- [Alpha: 255, Red: 255, Green: 255, Blue: 255]
[My Video Promotion]
  1. Java Object Serialization and Deserialization In MySQL Database
  2. Flipping An Image Horizontally and Vertically In Java
  3. How To Set Conditional Debug Breakpoints in Eclipse or IBM RAD?
  4. Rotating An Image In Java Graphics 2D By Specified Degree
  5. Java – How To Overlay One Image Over Another Using Graphics2D [Tutorial]
  6. Quick SQL Reference – Find Duplicate Data In A Table Using Having Clause
  7. Splitting PDF File Using Java iText API Into Multiple PDFs
  8. Object Serialization And De-Serialization In Java To Filesystem
  9. Finding Java Image Pixels Information – ARGB (Alpha, Red, Green Blue)
  10. Creating A 3D Pie Chart In Java Using JFreeChart [Example Source Code]
  11. How to capture a screenshot using Java and save it to a file?
  12. Java Tutorial – Swing Text Drag And Drop – Sample Example
  13. Serialzing A Java Object Into XML and De-Serialzing using XMLEncoder And XMLDecoder
  14. Six Stages Of Debugging in Software Engineering
  15. Java 2D Graphics Example Tutorial On Paint, Gradient and Stroke
  16. Complete Tutorial On Using SOAP-UI to Mock Web Service Request / Response
  17. Listing The Content Of Zip File With Zip Information In Java
  18. Joke – Why do Java Programmers wear glasses?
  19. How to receive files via bluetooth in your MacBook Pro
  20. Calculating Folder Size Graphically and Generating Directory Size Chart In Java
Tagged , , , , , , , . Bookmark the permalink.

6 Responses to Calculating Folder Size Graphically and Generating Directory Size Chart In Java

  1. nocdib says:

    Thank you for this! It is just what I need

  2. d says:

    would that help you tocreate the file from ubunt server

  3. komal gaikwad says:

    in this code i got problem of array out of bound plz tell me solution.

  4. komal gaikwad says:

    In this code i got error
    Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 1
    plz send me proper code….

  5. Neethu says:

    Thank you very much for the solution. This is the one which i was searching.

  6. Manikant says:

    I need to copy to the shared folder which is shared and can be authenticate by using credentials.

    but here the code is giving to write .

    I need copy my folder from my local to shared location

    Please help

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.