java图片透明_Java实现对图片透明化处理

本文介绍了一种使用Java代码将白色背景的图片处理成透明背景的方法。通过读取图片文件,利用BufferedImage类创建透明背景的新图片,并通过遍历每个像素判断其颜色值来设置透明度,最终保存为PNG格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因需要将一张白色背景图片处理为透明色,因此上网上搜了搜处理方案,可以通过ps和其他图片软件,但是我电脑上并没有这两个软件,下载安装太耗时。从网上搜了搜发现原来可以使用 Java 代码进行处理,代码如下:

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.swing.ImageIcon;

public class linuxidc {

public static void main(String[] args) throws IOException {

BufferedImage image = ImageIO.read(new File("/home/linuxidc/linuxidc.com/linuxidc.com.jpg"));

// 高度和宽度

int height = image.getHeight();

int width = image.getWidth();

// 生产背景透明和内容透明的图片

ImageIcon imageIcon = new ImageIcon(image);

BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);

Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics(); // 获取画笔

g2D.drawImage(imageIcon.getImage(), 0, 0, null); // 绘制Image的图片

int alpha = 0; // 图片透明度

// 外层遍历是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 (colorInRange(rgb)) {

alpha = 0;

} else {

// 设置为不透明

alpha = 255;

}

// #AARRGGBB 最前两位为透明度

rgb = (alpha << 24) | (rgb & 0x00ffffff);

bufferedImage.setRGB(x, y, rgb);

}

}

// 绘制设置了RGB的新图片

g2D.drawImage(bufferedImage, 0, 0, null);

// 生成图片为PNG

ImageIO.write(bufferedImage, "png", new File("/home/linuxidc/linuxidc.com/linuxidc.com.png"));

System.out.println("完成画图");

}

// 判断是背景还是内容

public static boolean colorInRange(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位

// 通过RGB三分量来判断当前颜色是否在指定的颜色区间内

if (red >= color_range && green >= color_range && blue >= color_range) {

return true;

}

;

return false;

}

// 色差范围0~255

public static int color_range = 210;

}

06c021e58bada7f521365a4077b215fa.png

处理前后效果对比:

ad8369ddebcb6280a4918624aa108e9b.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值