内容简介:因需要将一张白色背景图片处理为透明色,因此上网上搜了搜处理方案,可以通过ps和其他图片软件,但是我电脑上并没有这两个软件,下载安装太耗时。从网上搜了搜发现原来可以使用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 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; }
处理前后效果对比:
更多Java相关信息见 Java 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=19
Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址: https://www.linuxidc.com/Linux/2019-05/158866.htm
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 不公正的AI算法,在质疑中迈向透明化
- 挑战隐私、人脸识别技术存在滥用!纽约议员提出法案要求透明化
- php如何实现session,自己实现session,laravel如何实现session
- AOP如何实现及实现原理
- webpack 实现 HMR 及其实现原理
- Docker实现原理之 - OverlayFS实现原理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。