import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
public class Test {
public BufferedImage image;
public Test(){
image= openImage("test.jpeg");
seperateColor();
}
public synchronized BufferedImage openImage(String fileName){
try{
FileInputStream fis = new FileInputStream(new File(fileName));
InputStream is = new BufferedInputStream(fis);
BufferedImage newImage = ImageIO.read(is);
is.close();
return newImage;
}
catch(Exception e){
e.printStackTrace();
}
return null;
}
public Color getColor(int i, int j) {
return new Color(image.getRGB(i, j));
}
/*seperate the Color Channels
*
*/
public void seperateColor(){
int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
BufferedImage changedImage = new BufferedImage(imageWidth,imageHeight,BufferedImage.TYPE_INT_ARGB);
Color color;
for (int x = 0; x < imageWidth; x++) {
for (int y = 0; y < imageHeight; y++) {
color = getColor(x, y);
int r = 255- color.getRed();
int g = 255-color.getGreen();
int b = 255-color.getBlue();
changedImage.setRGB(x, y, (new Color(r, g, b)).getRGB());
}
}
new FrameRGB(changedImage, "aaaRED.jpg");
}
public static void main(String[] args){
new Test();
}
class FrameRGB extends JFrame{
public BufferedImage imageBuffer;
public String name;
public FrameRGB(BufferedImage image, String name){
setTitle("ColorSeperation");
int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
imageBuffer = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_ARGB);
imageBuffer.getGraphics().drawImage(image, 0, 0, null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(imageWidth, imageHeight);
setResizable(false);
setVisible(true);
this.name=name;
// saveImage();
}
public void paint(Graphics g){
g.drawImage(imageBuffer, 0, 0, this);
}
}
}