Java 为什么我将图像保存为JPG时会得到黑色背景?
我将Java 为什么我将图像保存为JPG时会得到黑色背景?,java,background,save,jpanel,Java,Background,Save,Jpanel,我将JPanel的背景色设置为白色。但是,当我将其保存为JPG或其他图像格式时,背景是黑色的。我已经输入了这个代码TYPE\u INT\u ARGB,但它不起作用。如何将背景设置为其他颜色?e、 蓝色、白色等 public void paintComponent(Graphics g) { int width = getWidth(); int height = getHeight(); // Create a buffered image i
JPanel
的背景色设置为白色。但是,当我将其保存为JPG或其他图像格式时,背景是黑色的。我已经输入了这个代码TYPE\u INT\u ARGB
,但它不起作用。如何将背景设置为其他颜色?e、 蓝色、白色等
public void paintComponent(Graphics g) {
int width = getWidth();
int height = getHeight();
// Create a buffered image in which to draw
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
// Create a graphics contents on the buffered image
Graphics2D g2d = bufferedImage.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setStroke(new BasicStroke(1)); // set the thickness of polygon line
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.00f));
g2d.setPaint(Color.black);//color of the polygon line
g2d.setBackground(Color.WHITE);
//draw polygon
for (Polygon triangle : triangles)
g2d.drawPolygon(triangle);
try {
File file = new File("newimage.jpg");
ImageIO.write(bufferedImage, "jpg", file);
} catch (IOException e) {
}
}//public void paint(Graphics g)
你在问题中给出了答案。将面板背景设置为白色,而不是BuffereImage。将图像另存为JPEG,而不是面板,因此JPEG具有默认背景,显示为黑色 保存为JPEG时,您希望有什么作为背景?JPEG是用于摄影的,它不能有透明区域,所以这些区域必须转换成某种颜色,这就是为什么有黑色(我想)。为什么不将图像保存为PNG?或者如果你想坚持使用JPEG,首先用白色填充区域,然后开始在上面绘图 如果你问我的话,你创建图像的方法是倒退的。所有其他问题都是关于在面板上绘制多边形的。现在您正在将代码更改为在图像上绘制 当您扩展JPanel并调用super.paintComponent()时,猜猜会发生什么?背景画出来了!然后进行自定义多边形绘制。在上面的代码中,您只需创建图像,然后绘制多边形 更简单的方法是创建一个例程,将面板绘制到图像中,然后可以重用代码,而无需覆盖每个组件的paintComponent方法
这门课是为你做的。我意识到这是一个非常古老的问题,但我自己也有一个类似的问题,因为我找到了答案(在javadocs中),我想我还是会把它贴在这里 当您在图形对象上设置背景色时,只有在清除某个区域时,背景色才会起作用。因此,只需立即清除整个区域,您就可以使用首选颜色的背景:
graphics.clearRect(0, 0, width, height);
将
TYPE\u INT\u ARGB
与JPEG一起使用是没有意义的。“A
”代表“alpha”或“透明度”,但JPEG没有透明度。尝试使用PNG代替。