Java 图像打印颜色不正确
我试图从磁盘读取PNG图像文件,在上面画一些矩形,并将修改后的图像保存在磁盘上。下面是scala代码:Java 图像打印颜色不正确,java,image,colors,graphics2d,javax.imageio,Java,Image,Colors,Graphics2d,Javax.imageio,我试图从磁盘读取PNG图像文件,在上面画一些矩形,并将修改后的图像保存在磁盘上。下面是scala代码: //l is a list of Rectangle objects of the form (x1,x2,y1,y2) val image = ImageIO.read(sourceimage); val graph=image.createGraphics() graph.setColor(Color.GREEN) l.foreach(x=>graph.draw(new java.
//l is a list of Rectangle objects of the form (x1,x2,y1,y2)
val image = ImageIO.read(sourceimage);
val graph=image.createGraphics()
graph.setColor(Color.GREEN)
l.foreach(x=>graph.draw(new java.awt.Rectangle(x.x1,x.y1,x.x2-x.x1,x.y2-x.y1)))
graph.dispose()
ImageIO.write(image,"png",new File(destimage))
绘制的矩形为
灰色
颜色,而不是绿色
。我做错了什么 如果源图像是灰度图像,则不太可能使用任何类型的颜色
相反,您需要创建第二个彩色的buffereImage
,并将原始图像绘制到其中
BufferedImage original = ImageIO.read(sourceimage);
BufferedImage iamge = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = image.createGraphics();
g2d.drawImage(original, 0, 0, null);
// Continue with what you have
对不起,我没有使用PIL的经验,但在纯Java中(基本上)就是这样做的源图像是彩色图像吗?我想不是。有没有一种方法可以在阅读PIL时将其转换为彩色图像?不知道PIL。但是我会用
type_ARGB
类型创建第二个缓冲区图像
,并在其上绘制原始图像,然后在缓冲区图像
上绘制矩形,保存它……谢谢,如果你不介意的话,你能告诉我怎么做吗?我对java中的图像处理一无所知。我看到的所有示例都创建了一个BufferdImage
像新的BufferedImage(800600,BufferedImage.TYPE_INT_RGB),但不是来自另一个BufferedImage
。太棒了!这很有效。有一些输入错误:iamge=new BufferedImage(image.getWidth(),image.getHeight(),BufferedImage.TYPE_ARGB)
;可能应该是image=new BufferedImage(original.getWidth(),original.getHeight(),BufferedImage.TYPE\u INT\u ARGB)
。如果您想编辑。感谢您提供有关打字错误的信息;),很高兴能帮上忙