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

然后选择图片:

在这里插入图片描述

最后处理图片:

在这里插入图片描述

大功告成,附上效果图

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值