`
shendixiong
  • 浏览: 398524 次
  • 性别: 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对图片改变大小,png防止变黑,加圆角 圆角外透明

    本篇文章将深入探讨如何在Java中实现这些功能,特别是针对PNG格式的图片,因为PNG格式支持透明度,但在处理过程中可能会出现背景变黑的问题。 首先,我们需要引入Java的`java.awt`和`javax.imageio`包,它们提供了...

    java 半透明图片 实例代码

    在这个例子中,我们首先加载了名为"back.jpg"的背景图片,然后创建了一个新的`BufferedImage`对象,保持与原图相同的尺寸和类型。接着,我们使用`Graphics2D`的`setComposite`方法设置AlphaComposite,其中`...

    java+png透明图片处理方法

    8. **其他文件**: `实例28 图片的处理.rar`和`3438_files`、`80922_files`、`2502_files`这些文件可能包含的是实际的代码实例、测试数据或者其他的辅助资源,用于展示如何在Java中处理PNG图片的透明度。 了解这些...

    Android创建抗锯齿透明背景圆角图像

    同时,通过设置Canvas的绘制颜色为透明,例如`canvas.drawColor(Color.TRANSPARENT)`,可以确保背景透明。 对于圆角图像,Android提供了多种实现方式。一种是使用自定义View,重写onDraw()方法,利用Canvas的...

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

    代码中提到的是三张图片的叠加过程,首先我们需要读取每一张图片。使用`ImageIO.read()`方法可以从文件系统中读取一个图像,返回一个`BufferedImage`对象。例如: ```java File imageFile1 = new File("image1.png...

    java 图片透明设置

    java版 图片透明设置功能代码,运行正常,是图片处理的方便工具类

    Java半透明图片实现的步骤及源代码javalearnsa资料分享

    本文将详细介绍如何在Java中创建和处理半透明图片,并提供相应的源代码示例。 首先,我们需要了解颜色的基本概念。在计算机图形学中,颜色通常由红、绿、蓝(RGB)三个分量表示,每个分量的值范围是0到255。而在...

    Android创建抗锯齿透明背景圆角图像.zip

    在项目源码中,可能包含了以上所述的某一种或多种实现方式,以及相关的布局文件、图片资源和Java代码。通过分析源码,我们可以深入理解如何在实际项目中应用这些技术。对于初学者,这是一个很好的学习和参考实例,...

    java中处理图片水印

    在Java编程语言中,处理图片水印涉及到图像处理和...这段代码将“水印”文本以45度角、半透明效果添加到原图的右下角。你可以根据需求调整字体、颜色、位置、透明度和旋转角度等参数,以创建符合自己需求的水印效果。

    Jframe添加背景图片

    在Java Swing中,我们经常需要为`JFrame`窗口设置背景图片来提升用户体验或实现特定的设计需求。本文将详细介绍如何在`JFrame`中添加背景图片,并通过一个示例程序来具体说明实现过程。 #### 一、基本原理 在Swing...

    java电子印章处理.zip

    这个名为"java电子印章处理.zip"的压缩包文件显然包含了关于如何去除图片水印、转换为透明背景以及进行图像缩放的相关代码或教程。下面我们将深入探讨这些知识点。 首先,**去除图片水印**通常涉及到图像处理算法。...

    java处理图片大小等比例缩放,自定义修改图片大小,截取,水印

    在Java编程语言中,处理图片是一项常见的任务,包括调整图片大小、等比例缩放、...在实际开发中,我们还可以借助第三方库如`ImageMagick`、`Java Advanced Imaging (JAI)`或`JavaFX`的`ImageView`来更高效地处理图片。

    Java 实现证件照底图替换,Java 实现照片头像底图替换

    总的来说,通过Java的`java.awt.image`包,我们可以轻松实现证件照和头像的底图替换,为各种应用场景提供灵活的图像处理能力。这个过程涉及到的基本步骤包括读取图像、创建新背景、融合图像以及保存结果,全部都在...

    java生成透明图片

    在Java编程语言中,生成透明图片涉及到图像处理和颜色模型的知识。Java提供了丰富的API来处理图像,例如在`java.awt`和`javax.imageio`包中。本文将深入探讨如何在Java中创建并保存带有透明度的PNG或GIF图片。 首先...

    JAVA 实现不规则图片背景效果

    通过以上步骤,你就可以在Java Swing应用程序中实现一个具有不规则背景图片且可能具有透明效果的登录框。这个方法同样适用于其他类型的界面组件,只需要调整剪裁形状以适应特定的设计需求。记住,良好的界面设计能够...

    用Java写成的改变图像透明度合成图像程序

    本程序以"改变图像透明度合成图像"为主题,涉及到的核心知识点主要包括Java的AWT和Swing库中的图形API,图像透明度的概念,以及图像合成技术。 首先,我们要了解图像透明度。在计算机图形学中,透明度通常被称为...

    java 图片溶合特效源码

    2. **阿尔法通道溶合**:利用图片的透明度(阿尔法通道)进行混合,使前景图片部分透明,与背景图片结合。 3. **光照效果**:通过模拟光线照射的效果,让图片产生深度感和立体感。 4. **滤镜应用**:可以使用多种...

    Java半透明图片实现的步骤及源代码.7z

    半透明图片,也称为具有透明度的图片,其背景可以透过图像的一部分看到。以下是一个详细的步骤来实现这个功能,并附带源代码示例。 1. **理解Alpha通道** 在RGB色彩模型中,每个像素由红、绿、蓝三个分量表示。而...

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

    本文档的源码提供了实现这一功能的方法,适用于毕业设计或代码学习项目,尤其是对于JAVA和ANDROID开发者来说,这是一份非常实用的学习资源。 首先,让我们深入了解一下抗锯齿技术。抗锯齿是为了消除图像边缘的锯齿...

    java 如何在窗体背景图片上加控件

    在Java代码的开头,加入如下导入语句: ```java import javax.swing.*; import java.awt.*; ``` 1. **设置窗体背景图片**: - 首先,加载背景图片。你可以使用`ImageIcon`类来读取本地或网络上的图片资源。例如:...

Global site tag (gtag.js) - Google Analytics