Click here to Skip to main content
15,884,059 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Java
BufferedImage bimg = ImageIO.read(fc.getSelectedFile());
bimg.setRGB(0, 0, 1234);
int x = bimg.getRGB(0,0);

in the above code i didn't get x as 1234 why ?
Posted

1 solution

That is because in BufferedImages with a ColorModel the pixel is set to the nearest colour chosen. That means that you might not get the colour you wanted because the colours you can set are limited to the colours in the ColorModel.

You can get around that by creating your own BufferedImage and draw the source image onto that and then manipulate those pixels;

Java
package com.bornander.test;

import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;

public class Program {
	
  public static void main(String[] args) throws Exception {
    BufferedImage src = ImageIO.read(new File("C:\\Temp\\SomeImage.png"));
    BufferedImage dst = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
    dst.getGraphics().drawImage(src, 0, 0, null);
		
    System.out.println("Before: " + dst.getRGB(0, 0));
    dst.setRGB(0, 0, 1234);
    System.out.println("After : " + dst.getRGB(0, 0));
  }
}


Hope this helps,
Fredrik
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900