为什么在这里我用三种RGB颜色(125,126,127)设置RGB(),但是当getRGB它返回另一个值(125,126,128)。 对于(122,126,127),它返回true(122,126,127)。 为什么? 和: 输入:image.setRGB(0,0,5072962)// 77 ----- 104 ----- 66 ------- 5072962 输出:78 ------ 104 ------ 69 ------- 5138501 (rgb =(红色<< 16)|(绿色<<<<<<<<<<<<<"
我的代码:
// 77 ------- 104 ------- 66 ------ 5072962
final static int rgb = 5072962;
public static void main(String[] args) {
BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
//image.setRGB(0, 0, 5072962);
Color c = new Color(125, 126, 127);
image.setRGB(0, 0, c.getRGB());
File outputFile = new File("123.jpg");
try {
ImageIO.write(image, "jpg", outputFile);
File f = new File("123.jpg");
BufferedImage bi = ImageIO.read(f);
for (int h = 0; h < 1; h++) {
for (int w = 0; w < 1; w++) {
int pixel = bi.getRGB(w, h);
Color c2 = new Color(pixel);
int red = c2.getRed();
int green = c2.getGreen();
int blue = c2.getBlue();
int rgb = (red << 16) | (green << 8) | blue;
System.out.printf("%-8d%-8d%-8d%-8d", red, green, blue, rgb);
System.out.println("");
}
}
} catch (IOException ex) {
System.out.println("Error output File image!");
}
}
答案 0 :(得分:2)
首先,你知道图像文件格式吗?在类似的情况下,我有同样的问题。我想建议你以下。
当您使用jpg
将图像写入操作存储到存储中时,RGB
值会略有变化,因为jpg
格式是一种有损压缩文件格式。此压缩允许您获得存储文件的最佳空间,但它不会存储您想要的RGB
值的信息。
因此,如果文件格式对您来说不是一个大问题,那么只需使用PNG
格式。 PNG
格式是无损压缩文件格式,因此您可以检索之前在程序中设置的RGB
值。
希望它对你有所帮助。