`
shendixiong
  • 浏览: 393067 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

java 切圆图代码(方图切圆图)背景为透明

    博客分类:
  • java
阅读更多
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版 图片透明设置功能代码,运行正常,是图片处理的方便工具类

    java多张图片重叠。包括透明图片

    这个代码可以把多张图片重叠成一张图片。如果是透明图片透明的部分还保持透明。 代码中是三张图片叠加,并且改变了其中一张图片的大小

    JAVA上百实例源码以及开源项目源代码

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java源码包---java 源码 大量 实例

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    JAVA上百实例源码以及开源项目

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java源码包2

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    半透明背景的下拉菜单

    半透明背景的下拉菜单 保证专业美观,有图片和代码

    java源码包4

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java源码包3

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    java jdk实列宝典 光盘源代码

    一个时钟程序,能够显示星期和日期,变化背景和透明度Clock.java; 11 java多媒体 滚动的消息,实现一个简单的动画,具有滚动效果的文本消息RollingMessage.java; 三维弹球,BouncingB.java; 贪吃蛇游戏SnakeModel....

    java 手机开发源代码

    java 手机开发 第2章 Hello3D 最基础的MIDlet例子,用于测试开发环境 第3章 EventDemo 事件处理演示 MMAPIDemo 声音播放演示 RMSMIDlet 记录存储演示 第4章 M3GCube 立方体模型 pyramidSample 四棱锥模型 Sword 宝剑...

    ImageCombiner一个专门用于Java服务端图片合成的工具没有很复杂的功能简单实用

    图像处理资源ImageCombiner是一个专门用于Java服务端图片合成的工具,没有很复杂的功能,简单实用,从实际业务场景出发,提供简单的接口,几行代码即可实现图片拼合(当然用于合成水印也可以),素材上支持图片、...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    应用源码之创建抗锯齿透明背景圆角图像.zip

    android 源码学习. 资料部分来源于合法的互联网渠道收集和整理,供大家学习参考与交流。本人不对所涉及的版权问题或内容负法律责任。如有侵权,请通知本人删除。感谢CSDN官方提供大家交流的平台

    android开发设置圆形、圆角图片(全网最简单,不会你打我)

    最近在开发一个Android App,用户头像那里需要弄一个圆形的图片,但是 ...1、用 PS 做一张正方形,内切一个透明的圆(可以选择加圆形边框),然后将其保存为 .png 的图片 亲测有效,给大家看一下效果图吧!

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以...

    Java生成词云!你喜欢得书都在图里!

    在做数据分析得时候,生成词云图是很常见得需求,正常情况下大部分都是通过python去采集数据并且生成,异常强大,本文来说说java如何生成词云! 在github上找轮子得时候,发现了这么一个项目:Kumo(项目地址:...

    kumo:Kumo-Java词云

    Kumo的目标是用Java创建功能强大且用户友好的Word Cloud API。 Kumo直接生成图像文件,而无需像许多其他库一样创建小程序。 请随时加入并帮助改善Kumo! Kumo中有许多用于性能优化的地方! 当前功能 绘制矩形,圆形...

    JAVA创建不规则窗口

    现在JAVA Swing也能写出任意形状的不规则窗口以及半透明窗口程序了,是真正的任意形状及透明窗口,不是屏幕截图然后设为窗口程序背景。附源代码,并加了详细的注释。

Global site tag (gtag.js) - Google Analytics