对图片进行透明化处理-使用java程序

时间:2023-03-10 04:14:46
对图片进行透明化处理-使用java程序

因需要将一张白色背景图片处理为透明色,因此上网上搜了搜处理方案,可以通过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 Application {
public static void main(String[] args) throws IOException {
BufferedImage image = ImageIO.read(new File("D:\\郑州-买房\\subway-graph.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("D:\\郑州-买房\\subway-graph2.jpg"));
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;
}

代码来自:http://www.cnblogs.com/TheoryDance/p/7094376.html

处理前后效果对比:

处理前 处理后
对图片进行透明化处理-使用java程序 对图片进行透明化处理-使用java程序