/**
* @return void
* @Author fengfanli
* @Description //TODO 画图 改变背景颜色
* TODO 重点1 :png图片合成到另一个图片时,透明地带出现黑色情况, 原因:Graphics2D 创建图片背景为黑色
* @Date 16:31 2021/4/8
* @Param [canvas, logo, logoX, logoY]
**/
public static void drawImageAndChangeBackgroundColor(BufferedImage canvas, BufferedImage logo, Integer logoX, Integer logoY) throws IOException {
Graphics2D g2d = canvas.createGraphics();
// 解决png透明图片会变黑的问题(画一个新图片,然后合成,记得透明度)
Graphics2D graphics = logo.createGraphics();
BufferedImage compatibleImage = graphics.getDeviceConfiguration().createCompatibleImage(logo.getWidth(null), logo.getHeight(null), Transparency.TRANSLUCENT);
// 下面这行也可以代替上面这行
//BufferedImage compatibleImage = new BufferedImage(image.getWidth(), image.getHeight(), Transparency.TRANSLUCENT);
graphics = compatibleImage.createGraphics();
graphics.drawImage(logo, 0, 0, null);
graphics.dispose();
// 合成图片
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2d.drawImage(compatibleImage, logoX, logoY, null);
g2d.dispose();
}