JAVA图片透明处理
public static void main(String[] args) { try { BufferedImage image = ImageIO .read(new FileInputStream("f://1.jpg")); // 读取图标 BufferedImage imageBiao = ImageIO.read(new FileInputStream( "f://3.png")); Graphics2D g = image.createGraphics(); // g.setColor(Color.YELLOW); // g.setFont(new Font("华文中宋", Font.LAYOUT_LEFT_TO_RIGHT, 48)); // g.drawString("图像合成示例",100, image.getHeight() - 400); // 写入图标 ImageFilter imgf = new MyFilter(255); FilteredImageSource fis = new FilteredImageSource(imageBiao .getSource(), imgf); Image im = Toolkit.getDefaultToolkit().createImage(fis); g.drawImage(im, 0, 0, imageBiao.getWidth(null), imageBiao .getHeight(null), null); g.dispose(); FileOutputStream out = new FileOutputStream("f://图标文字合成3.gif"); JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out); encoder.encode(image); out.close(); // 把以上原图和加上图标后的图像 } catch (Exception e) { e.printStackTrace(); } } } class MyFilter extends RGBImageFilter {// 抽象类RGBImageFilter是ImageFilter的子类, // 继承它实现图象ARGB的处理 int alpha = 0; public MyFilter(int alpha) {// 构造器,用来接收需要过滤图象的尺寸,以及透明度 this.canFilterIndexColorModel = true; // TransparentImageFilter类继承自RGBImageFilter,它的构造函数要求传入原始图象的宽度和高度。 // 该类实现了filterRGB抽象函数 // ,缺省的方式下,该函数将x,y所标识的象素的ARGB值传入,程序员按照一定的程序逻辑处理后返回该象素新的ARGB值 this.alpha = alpha; } public int filterRGB(int x, int y, int rgb) { DirectColorModel dcm = (DirectColorModel) ColorModel.getRGBdefault(); // DirectColorModel类用来将ARGB值独立分解出来 int red = dcm.getRed(rgb); int green = dcm.getGreen(rgb); int blue = dcm.getBlue(rgb); int alp=dcm.getAlpha(rgb); if(red==255&&blue==255&&green==255){// 如果像素为白色,则让它透明 alpha = 0; }else{ alpha=255; } //if (alp==0) {//png和gif格式图片透明部分仍然透明 // alpha = 0; // }else{ // alpha = 255; //} return alpha << 24 | red << 16 | green << 8 | blue;// 进行标准ARGB输出以实现图象过滤 } 如果这样的话是可以是可以达到效果的,但是白色遇其他颜色交接的地方老出现锯齿,是不是失真啊 后来找了些png和gif的图片将中间白色的扣掉了,以为直接合成就可以了,但是不行,还要加上对alpha的判断 //if (alp==0) {//png和gif格式图片透明部分仍然透明 // alpha = 0; // }else{ // alpha = 255; //} 不过效果还是不好,但比前面将白色透明的效果过好多了,所以还是将图片先处理一下再调用程序 这些都是将图片部分透明的,如果想全部一起透明的话,建议使用 AlphaComposite 类的getInstance (int rule, float alpha)方法设置alpha的值 原文出处:http://hi.baidu.com/berry_0712/blog/item/6a28190f7ce02c2d6059f3e2.html
JAVA图片透明处理相关推荐
- java图片透明浮水印_PHP 为图片加上浮水印 (含浮水印透明背景处理)
PHP 要为图片加上浮水印: 就是要将两张图合并在一起, 浮水印的图片要盖在上面. 现实状况还会遇到原图要缩略图后, 浮水印的图片可能也要跟着缩略图, 这些部分再此就不写了, 此部份缩略图可见此篇: ...
- java image 透明_Java实现图片透明效果
Java实现图片透明效果,从演示截图可看到,上层图片与下层图片互相重叠,也就是上层图片透明了,看到了下层以的图片,具体的代码实现: public class HalfTransparentImageD ...
- java图片处理开源项目_如何处理离开开源项目
java图片处理开源项目 2015年初,我决定离开我的工作,这是我刚刚工作两年多的时候. 我的家人和朋友中没有一个人对我担任其他职位感到惊讶. 采取这一举措是一件很平常的事情,特别是在我们倾向于频繁更 ...
- java 图片不失真缩放,ico格式图片转换,透明图层,jar->exe
Java 图片缩放,转ico格式 Java 在转换图片格式为 ico 时 需要引入 image4j 的依赖,这里分享一个自己写好的并通过exe4j 打包好的exe小程序.因为功能太少所以再引入 thu ...
- java 图片水印_JAVA实现图片水印
一.JAVA图片水印实现原理 1.1.JAVA图片水印实现思路 1.创建缓存图片对象. 2.创建Java绘图工具对象. 3.使用绘图工具对象将原图绘制到缓存图片对象. 4.使用绘图工具将水印(文字/图 ...
- Java图片水印生成器代码 - 批量给自己的网站图片加水印
Java图片水印生成器代码 - 批量给自己的网站图片加水印 最近在做一款APP,App中的图片是自己一个个的画出来的,为了保证图片不被盗用和处理,所以就需要加上水印防盗.这跟CSDN一样. 注意事项: ...
- java 图片 base64_java实现图片转base64字符串 java实现base64字符串转图片
java 图片转base64字符串.base64字符串转图片,具体内容如下 1. 图片转base64字符串: /** * base64编码字符串转换为图片 * @param imgStr base64 ...
- 单元格变色和图片透明
用单元格变色的方法来做网页导航,在网上可以经常看到,但代码有简有繁,如果运用样式表来实现,将可以节约很多代码,特别是当有很多行需用这种效果时: 1 .aa { background-color:# ...
- 新分享一种解决ie6下PNG图片透明的方法
IE6中的图片不透明问题一直困扰着广大设计从业者们,前段时间已经分享了一种使用HTC文件解决的方法和使用滤镜使png背景图片透明的方法,今天再分享一种使用脚本代码使PNG图片在IE6中透明的办法. 脚 ...
最新文章
- 彻底排除微软媒体中心被软件限制问题
- 计算机科学与编程基础,国外经典教材·计算机科学与技术:Oracle 10g编程基础
- KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200)题解
- 96.2. Yum 安装
- 论文解读丨文档结构分析
- 托管元数据(2)——托管元数据和搜索中的精简面板
- 解决Nginx出现403 forbidden
- 全国计算机考试一级在线模拟考试系统,全国计算机等级考试模拟系统全国计算机等级考试一级模拟试题和答案.doc...
- 新软件--AutoReply(自动回复),还能自动接听,做答录机
- 从Cadence发展史中,看EDA的一段江湖故事
- js判断设备是PC端还是移动端
- java罗马数字_Java实现的求解经典罗马数字和阿拉伯数字相互转换问题示例
- SQL ITE 应用单元测试 未能加载文件或程序集
- flutter中播放音乐
- uIP TCP Server 运行机制分析
- Failed to introspect Class [com.mchange.v2.c3p0.ComboPooledDataSource] from ClassLoader [ParallelWeb
- c语言间隔符号的作用,C语言教学(二)常见的符号
- 桌面打开计算机没反应,点击显示桌面没反应? 显示桌面没反应解决方法
- 透过“500家门店计划”,看华为的“全屋智能”野心
- iOS:集成iAd广告