最近用到Java动态生成背景透明的图片功能,从gif和png中选择了png格式,个中缘由就不说了,于是动手到网上搜索有用的代码。现把搜索结果总结如下:
1. 生成png图片
int width = 400;
int height = 300;
// 创建BufferedImage对象
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取Graphics2D
Graphics2D g2d = image.createGraphics();
// 画图
g2d.setColor(new Color(255,0,0));
g2d.setStroke(new BasicStroke(1));
g2d.draw
//释放对象
g2d.dispose();
// 保存文件
ImageIO.write(image, "png", new File("c:/test.png"));
int width = 400;
int height = 300;
// 创建BufferedImage对象
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取Graphics2D
Graphics2D g2d = image.createGraphics();
// 画图
g2d.setColor(new Color(255,0,0));
g2d.setStroke(new BasicStroke(1));
g2d.draw
//释放对象
g2d.dispose();
// 保存文件
ImageIO.write(image, "png", new File("c:/test.png"));
这只是绘制图形的代码,其背景是黑色的,如何才能背景透明呢?继续搜索,没有得到结果,不过搜出以下代码,它只是把自己绘制的图形设置为透明或半透明,背景并不透明,如下:
2. 绘制半透明图形
int width = 400;
int height = 300;
// 创建BufferedImage对象
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取Graphics2D
Graphics2D g2d = image.createGraphics();
// 设置透明度
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 1.0f)); // 1.0f为透明度 ,值从0-1.0,依次变得不透明
// 画图
g2d.setColor(new Color(255,0,0));
g2d.setStroke(new BasicStroke(1));
g2d.draw
//释放对象
//透明度设置 结束
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
g2d.dispose();
// 保存文件
ImageIO.write(image, "png", new File("c:/test.png"));
这样绘制的图形应该说是前景透明的,背景依然是黑色,:(
网上没有看到有益的代码,在csdn上一位说自己实现了,但却没有说怎么实现的,没办法只能自己摸索了,耗了半个多小时,几乎查看了BufferedImage 和Graphics2D 所有方法和属性,终于找到了解决方案,只不过是增加两行代码而已,如下:
int width = 400;
int height = 300;
// 创建BufferedImage对象
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取Graphics2D
Graphics2D g2d = image.createGraphics();
// ---------- 增加下面的代码使得背景透明 -----------------
image = g2d.getDeviceConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
g2d.dispose();
g2d = image.createGraphics();
// ---------- 背景透明代码结束 -----------------
// 画图
g2d.setColor(new Color(255,0,0));
g2d.setStroke(new BasicStroke(1));
g2d.draw
//释放对象
g2d.dispose();
// 保存文件
ImageIO.write(image, "png", new File("c:/test.png"));
分享到:
相关推荐
当处理PNG图片时,尤其是透明PNG,需要特别注意保持其透明特性。使用`ColorModel`和`Raster`可以保留Alpha通道(透明度通道)。确保在缩放或处理过程中,透明像素不会被错误地填充为黑色。 4. **创建圆角效果**: ...
在Java编程语言中,生成透明图片涉及到图像处理和颜色模型的知识。Java提供了丰富的API来处理图像,例如在`java.awt`和`javax.imageio`包中。本文将深入探讨如何在Java中创建并保存带有透明度的PNG或GIF图片。 首先...
在Java编程语言中,生成图片是一项常见的任务,尤其在数据可视化、报告生成或者网页动态内容制作等场景。这里我们将深入探讨如何使用Java根据配置文件批量生成图片。 首先,要生成图片,我们需要理解Java中的图像...
Java动态生成图片并把当前时间写在图片上是一项常见的需求,比如用于生成验证码、日志记录或者自定义的报告。这个任务涉及到Java图形处理、日期时间处理以及IO操作等多个方面。下面将详细介绍如何实现这个功能。 ...
Java生成的二维码图片是一种常见的数据编码方式,尤其在移动支付、信息分享等领域广泛应用。QRcode,全称为Quick Response Code(快速响应码),是由日本Denso Wave公司发明的一种二维条形码,可以存储大量的文本、...
// 保存为PNG图片 } catch (IOException e) { e.printStackTrace(); } } ``` 为了生成1到1000的图片,我们可以将这个方法放入一个循环中,如下所示: ```java for (int i = 1; i ; i++) { createImage(i); } ...
总的来说,“批量去除png透明区域”工具是一款实用的图像处理软件,它通过自动化的方式解决了大量PNG图片背景处理的问题,提高了工作效率,同时配置文件功能提供了操作的便利性和一致性。在日常的图形设计、网页制作...
在Java编程环境中,将多张PNG、JPG等格式的静态图片转换为动态GIF图像是一项常见的需求。这个过程涉及到图像处理和动画制作的技术。在本文中,我们将深入探讨如何利用Java来实现这一功能,同时关注如何设置各种参数...
在Java开发中,将HTML转换为图片是一种常见的需求,例如用于网页截图、报表生成或邮件模板预览。本文将深入探讨几种不同的方法,分析它们的优缺点,以帮助开发者选择最适合项目需求的解决方案。 1. **Java2DPDF库转...
首先,我们来看标题"java生成图片验证码"。这个标题暗示我们将探讨的是在Java环境中生成随机的、可读性较差的文本,并将其转化为图像的过程,以创建一个验证码。验证码通常由字母、数字或两者混合组成,设计的目的...
本示例探讨了如何将多张图片重叠在一起,包括处理透明度,特别是PNG等支持透明度的图像格式。这是一个关键的图像处理技术,因为可以创建复杂的视觉效果或者进行图像合成。 首先,我们需要引入Java的`javax.imageio`...
最后,将结果保存为PNG图片。 在运行这段代码之前,请确保已经将`logoPath`替换为你的logo图片的绝对路径,并指定好输出的二维码图片路径(`qrCodePath`)。执行后,将在指定路径生成一个带有logo的二维码图片。 ...
总结,通过以上步骤,我们可以使用Java实现一个功能完备的小程序海报图和分享图生成工具,它能够处理各种图像元素,进行精确的布局和文字排版,同时解决PNG图像的透明度问题,确保在微信小程序环境中呈现出高质量的...
在这个“java生成推广二维码”的项目中,我们主要探讨的是如何使用Java来创建具有美化效果和推广功能的二维码。 首先,我们需要了解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,能够存储...
在这个特定的项目中,“java jsp根据不同的IP生成不同的图片 背景为同一张图片 个性签名.rar”是一个实践案例,它涉及到了动态生成个性化图片的技术。以下将详细解析这个项目的知识点: 1. **IP地址获取**:首先,...
例如,`99999.png`可能是一个已经生成的二维码,而`background.png`可能是作为合成背景的图片。 3. **生成二维码**: 使用ZXing库生成二维码的基本步骤包括创建`MultiFormatWriter`实例,选择合适的编码格式(如`...
Java 后台生成的表格通常用于数据展示,但有时我们需要将这些动态生成的表格转换为图片格式,以便于分享、打印或保存。这就涉及到一个工具——HtmlImageGenerator,也称为Html2Image。这个工具能够将HTML页面转化为...
本示例“java生成二维码demo”就是这样一个案例,它演示了如何在Java环境下创建包含图片和参数的二维码。 首先,生成二维码的核心库通常是`com.google.zxing`,这是一个开源的条码和二维码处理库。在Java中,我们...
在Java编程环境中,生成物流打印单是常见的任务之一,尤其对于电商或物流公司而言。这个过程通常涉及到条形码和二维码的生成,以便于快速准确地识别包裹信息。在这个项目中,开发者利用了Java的Graphics2D图形库以及...
这个"java生成验证码demo"提供了生成自定义验证码图片的方法,包括设置图片尺寸、验证码长度,以及添加各种视觉混淆元素,以增加机器识别的难度。 首先,我们要理解验证码的基本原理。它通常由一组随机生成的字母或...