java修改24位深度png图片为32位深度

2020-11-12  本文已影响0人  板栗炖牛肉

前言

在做图片切割时,发现切除来的图片空白部分变成了黑色背景,发现属性是24位深度

解决方案

1.先上代码

        BufferedImage image = readImage(url);
        BufferedImage bufferedImage = new BufferedImage(width, height, image.getType());
        Graphics2D gr = bufferedImage.createGraphics();
        //创建、透明背景
        bufferedImage = gr.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
        gr = bufferedImage.createGraphics();
        //重绘
        gr.drawImage(image.getScaledInstance(width, height, Image.SCALE_DEFAULT), 0, 0, width, height, null);
        gr.dispose();
        File file = new File(outFile);
        ImageIO.write(bufferedImage, "png", file);

2.主要代码(这一步主要是将创建的空白图片重置为透明png图片)

        bufferedImage = gr.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
        gr = bufferedImage.createGraphics();

3.其他说明(这一步作保真处理)

image.getScaledInstance(width, height, Image.SCALE_DEFAULT)

4.其他代码

    /**
     * 图片、读取
     *
     * @param url
     * @return
     * @throws Exception
     */
    private static BufferedImage readImage(String url) throws Exception {
        File file = new File(url);
        FileInputStream fis = new FileInputStream(file);
        BufferedImage image = ImageIO.read(fis);
        return image;
    }
上一篇 下一篇

猜你喜欢

热点阅读