public static void main(String[] args) throws IOException { // 来源图 BufferedImage bi1 = ImageIO.read(new File("C:/Users/Administrator/Desktop/body_bg.jpg")); // 根据需要是否使用 BufferedImage.TYPE_INT_ARGB BufferedImage image = new BufferedImage(bi1.getWidth(), bi1.getHeight(), BufferedImage.TYPE_INT_ARGB); Ellipse2D.Double shape = new Ellipse2D.Double(0, 0, bi1.getWidth(), bi1.getHeight()); Graphics2D g2 = image.createGraphics(); image = g2.getDeviceConfiguration().createCompatibleImage(bi1.getWidth(), bi1.getHeight(), Transparency.TRANSLUCENT); g2 = image.createGraphics(); // 将背景设置为透明。如果注释该段代码,默认背景为白色.也可通过g2.setPaint(paint) 设置背景色 g2.setComposite(AlphaComposite.Clear); g2.fill(new Rectangle(image.getWidth(), image.getHeight())); g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.9f)); g2.setClip(shape); // 使用 setRenderingHint 设置抗锯齿 g2.drawImage(bi1, 0, 0, null); g2.dispose(); try { // 输出图地址 ImageIO.write(image, "PNG", new File("C:/Users/Administrator/Desktop/4d.png")); } catch (IOException e) { e.printStackTrace(); } }
关键代码说明:
g2.setComposite(AlphaComposite.Clear);
该段代码主要将背景色设置为透明。如果注释该代码默认背景色为白色
g2.setPaint(paint)
设置背景色
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.9f));
设置透明度!数值越大透明度越低。
经过测试,上面的方法虽然可以设置背景为透明。但是背景边缘是有锯齿的。网上说加入
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
这段代码可消除锯齿。下面的方法同样可切圆图并且能去除锯齿。
public static boolean makeRoundedCorner(String srcImageFile, String outFilePath,Integer width,Integer height, String type, int cornerRadius) { try { File file = new File(srcImageFile); BufferedImage image = ImageIO.read(file); int w = image.getWidth(); int h = image.getHeight(); if (width != null) { w = width; } if (height != null){ h = height; } BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = output.createGraphics(); output = g2.getDeviceConfiguration().createCompatibleImage(w, h, Transparency.TRANSLUCENT); g2.dispose(); g2 = output.createGraphics(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.fillRoundRect(0, 0, w, h, cornerRadius, cornerRadius); g2.setComposite(AlphaComposite.SrcIn); g2.drawImage(image, 0, 0, w, h, null); g2.dispose(); return ImageIO.write(output, type, new File(outFilePath)); } catch (IOException e) { Log.error(e); } return false; }
注意参数
cornerRadius
表示图片四周的弧度!将弧度设置为720即可切圆图了
相关推荐
java版 图片透明设置功能代码,运行正常,是图片处理的方便工具类
这个代码可以把多张图片重叠成一张图片。如果是透明图片透明的部分还保持透明。 代码中是三张图片叠加,并且改变了其中一张图片的大小
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
半透明背景的下拉菜单 保证专业美观,有图片和代码
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...
一个时钟程序,能够显示星期和日期,变化背景和透明度Clock.java; 11 java多媒体 滚动的消息,实现一个简单的动画,具有滚动效果的文本消息RollingMessage.java; 三维弹球,BouncingB.java; 贪吃蛇游戏SnakeModel....
java 手机开发 第2章 Hello3D 最基础的MIDlet例子,用于测试开发环境 第3章 EventDemo 事件处理演示 MMAPIDemo 声音播放演示 RMSMIDlet 记录存储演示 第4章 M3GCube 立方体模型 pyramidSample 四棱锥模型 Sword 宝剑...
图像处理资源ImageCombiner是一个专门用于Java服务端图片合成的工具,没有很复杂的功能,简单实用,从实际业务场景出发,提供简单的接口,几行代码即可实现图片拼合(当然用于合成水印也可以),素材上支持图片、...
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...
android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台
最近在开发一个Android App,用户头像那里需要弄一个圆形的图片,但是 ...1、用 PS 做一张正方形,内切一个透明的圆(可以选择加圆形边框),然后将其保存为 .png 的图片 亲测有效,给大家看一下效果图吧!
util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...
在做数据分析得时候,生成词云图是很常见得需求,正常情况下大部分都是通过python去采集数据并且生成,异常强大,本文来说说java如何生成词云! 在github上找轮子得时候,发现了这么一个项目:Kumo(项目地址:...
Kumo的目标是用Java创建功能强大且用户友好的Word Cloud API。 Kumo直接生成图像文件,而无需像许多其他库一样创建小程序。 请随时加入并帮助改善Kumo! Kumo中有许多用于性能优化的地方! 当前功能 绘制矩形,圆形...
现在JAVA Swing也能写出任意形状的不规则窗口以及半透明窗口程序了,是真正的任意形状及透明窗口,不是屏幕截图然后设为窗口程序背景。附源代码,并加了详细的注释。