直接上代码:
BufferedImage pngImage = ImageIO.read(new File("D:\\ImgTest\\test.png"));
BufferedImage bufferedImage = new BufferedImage(pngImage.getWidth(), pngImage.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g = bufferedImage.createGraphics();
g.drawImage(pngImage, 0, 0, Color.white, null);
g.dispose();
ImageIO.write(bufferedImage, "jpg", new File("D:\\ImgTest\\test.jpg"));
这样处理会使用白色背景替换掉原先的背景色,如果想保留png的透明背景,是不行的。
搜到的解释:
JPG格式的图片不是RGBA模式的,所以没有办法设置它的透明度,若要将图像设置能透明的,图片要选择png或gif格式的。