java实现图片去除底色,图片变成透明背景

java实现图片去除底色,图片变成透明背景

废话少说,直接进入正题!

实现原理及步骤

读取待处理图片为BufferedImage对象
BufferedImage image = ImageIO.read(new File("D://mm.png"));
遍历图片对象每个像素点进行处理

对image的每个像素点进行遍历处理,获得每个像素点的rgb颜色。判断当前rgb是否为匹配替换的rgb,如果是就替换成透明。
我们可以取图片的边缘颜色rgb作为匹配的对象。

		int alpha = 255;
		String removeRgb;
		// 遍历Y轴的像素
        for (int y = bufferedImage.getMinY(); y < bufferedImage.getHeight(); y++) { 
            // 遍历X轴的像素
            for (int x = bufferedImage.getMinX(); x < bufferedImage.getWidth(); x++) { 
                int rgb = bufferedImage.getRGB(x, y);
                // 取图片边缘颜色作为对比对象
                if (y == bufferedImage.getMinY() && x == bufferedImage.getMinX()) { 
                    removeRgb = convertRgb(rgb);
                }
                // 设置为透明背景
                if (removeRgb.equals(convertRgb(rgb))) { 
                    alpha = 0;
                } else { 
                    alpha = 255;
                }
                rgb = (alpha << 24) | (rgb & 0x00ffffff);
                bufferedImage.setRGB(x, y, rgb);
            }
        }
转RGB
public static String convertRgbStr(int color) { 
    int red = (color & 0xff0000) >> 16;// 获取color(RGB)中R位
    int green = (color & 0x00ff00) >> 8;// 获取color(RGB)中G位
    int blue = (color & 0x0000ff);// 获取color(RGB)中B位
    return red + "," + green + "," + blue;
}
生成图片为PNG
ImageIO.write(bufferedImage, "png", new File("D://mm(透明).png"));

以下工具就是使用java去实现的图片去除底色功能,简单粗暴,效果出众。

访问

https://tools.kalvinbg.cn/image/bgRemover

然后选择图片:

《java实现图片去除底色,图片变成透明背景》

最后处理图片:

《java实现图片去除底色,图片变成透明背景》

大功告成,附上效果图

《java实现图片去除底色,图片变成透明背景》

    原文作者:Kalvin_csdn
    原文地址: https://blog.csdn.net/u013899461/article/details/109010328
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞