ImageIO 没有打印正确的颜色
ImageIO not printing proper color
我正在尝试从磁盘读取 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.awt.Rectangle(x.x1,x.y1,x.x2-x.x1,x.y2-x.y1)))
graph.dispose()
ImageIO.write(image,"png",new File(destimage))
矩形已绘制,但颜色为 GREY
而不是 GREEN
。我究竟做错了什么?
如果源图像是灰度图像,则它不太可能能够使用任何类型的任何颜色。
相反,您需要创建第二个彩色的 BufferedImage
并将原件涂在上面。
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
中的做法
我正在尝试从磁盘读取 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.awt.Rectangle(x.x1,x.y1,x.x2-x.x1,x.y2-x.y1)))
graph.dispose()
ImageIO.write(image,"png",new File(destimage))
矩形已绘制,但颜色为 GREY
而不是 GREEN
。我究竟做错了什么?
如果源图像是灰度图像,则它不太可能能够使用任何类型的任何颜色。
相反,您需要创建第二个彩色的 BufferedImage
并将原件涂在上面。
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
中的做法