I would like to convert an array of pixels to images so that I can read each pixel of the image, I've converted the image to pixels and now what I'm trying to do is that I have a picture of an RGB circle , After converting the image to pixels I want to draw images again but Not the entire picture again , I want to draw the red circle alone , the green circle alone and the blue circle alone and store the images in a file , how can that be done ?
Here's the code that I used to convert the image to array pixels :
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.awt.image.PixelGrabber;
import java.io.File;
import java.io.IOException;
public class BMPtoArray {
public static int[] convertToPixels(Image img) {
int width = img.getWidth(null);
int height = img.getHeight(null);
int[] pixel = new int[width * height];
PixelGrabber pg = new PixelGrabber(img, 0, 0, width, height, pixel, 0, width);
try {
pg.grabPixels();
} catch (InterruptedException e) {
throw new IllegalStateException("Error: Interrupted Waiting for Pixels");
}
if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
throw new IllegalStateException("Error: Image Fetch Aborted");
}
return pixel;
}
public static void main(String[] args) throws IOException {
BufferedImage image = ImageIO.read(new File("C:\\Users\\Mhamd\\Desktop\\3rd year
first semester\\Analysis and Coding\\labs\\2.2Java\\src\\circleRGB.bmp"));
//System.out.println(convertToPixels(image));
}
}
Here's the image :
so this is basically what I'm trying to achieve
[![This is what I want to Achieve][2]][2]
CodePudding user response:
Here's a simple example of how to "turn off" the red channel:
final BufferedImage image = ImageIO.read(new File("test.bmp"));
int red = 0x00FF0000;
for (int row = 0; row < image.getHeight(); row ) {
for (int col = 0; col < image.getWidth(); col ) {
int color = image.getRGB(col, row);
color &= ~red;
image.setRGB(col, row, color);
}
}
This sets the red in each RGB pixel to 0. You can repeat for other colors and combinations.
This produces this from your source image: