我对图像有一些操作,我想以特定的颜色显示图像的特定部分。但是,在某些图像上,颜色显示为灰色。
例如,如果我写:
BufferedImage baseImage = javax.imageio.ImageIO.read(new File(fileName));
System.out.println(baseImage.getType());
System.out.println(baseImage.getRGB(0, 0));
baseImage.setRGB(0, 0, Color.BLUE.getRGB());
System.out.println(baseImage.getRGB(0, 0));
我的文件是红色的单个像素。输出是:
13
-65536
-16777216
如果我保存图像,我可以看到黑色像素。
我在上一个例子中尝试了一个月亮的图像,类型是5而不是13,它运行正常。
我做错了吗?
答案 0 :(得分:1)
缓冲的图像可以是您自己发现的不同类型:http://docs.oracle.com/javase/7/docs/api/java/awt/image/BufferedImage.html这取决于读取的文件。
如果您要求缓冲图像属于某种类型,则需要手动创建图像并将加载的图像绘制到其中。
E.g:
BufferedImage loadedImage = ImageIO.read(...);
BufferedImage rgbImage = new BufferedImage(loadedImage.getWidth(), loadedImage.getHeight(), BufferedImage.TYPE_INT_RGB);
rgbImage.getGraphics().drawImage(loadedImage, 0, 0, null);