JAVA实现图片叠加效果

 1 import java.awt.AlphaComposite;
 2 import java.awt.Graphics2D;
 3 import java.awt.image.BufferedImage;
 4 import java.io.File;
 5 import java.io.IOException;
 6
 7 import javax.imageio.ImageIO;
 8 public class NewImageUtils {
 9     /**
10      *
11      * @Title: 构造图片
12      * @Description: 生成水印并返回java.awt.image.BufferedImage
13      * @param file
14      *            源文件(图片)
15      * @param waterFile
16      *            水印文件(图片)
17      * @param x
18      *            距离右下角的X偏移量
19      * @param y
20      *            距离右下角的Y偏移量
21      * @param alpha
22      *            透明度, 选择值从0.0~1.0: 完全透明~完全不透明
23      * @return BufferedImage
24      * @throws IOException
25      */
26     public static BufferedImage watermark(File file, File waterFile, int x, int y, float alpha) throws IOException {
27         // 获取底图
28         BufferedImage buffImg = ImageIO.read(file);
29         // 获取层图
30         BufferedImage waterImg = ImageIO.read(waterFile);
31         // 创建Graphics2D对象,用在底图对象上绘图
32         Graphics2D g2d = buffImg.createGraphics();
33         int waterImgWidth = waterImg.getWidth();// 获取层图的宽度
34         int waterImgHeight = waterImg.getHeight();// 获取层图的高度
35         // 在图形和图像中实现混合和透明效果
36         g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha));
37         // 绘制
38         g2d.drawImage(waterImg, x, y, waterImgWidth, waterImgHeight, null);
39         g2d.dispose();// 释放图形上下文使用的系统资源
40         return buffImg;
41     }
42
43     /**
44      * 输出水印图片
45      *
46      * @param buffImg
47      *            图像加水印之后的BufferedImage对象
48      * @param savePath
49      *            图像加水印之后的保存路径
50      */
51     private void generateWaterFile(BufferedImage buffImg, String savePath) {
52         int temp = savePath.lastIndexOf(".") + 1;
53         try {
54             ImageIO.write(buffImg, savePath.substring(temp), new File(savePath));
55         } catch (IOException e1) {
56             e1.printStackTrace();
57         }
58     }
59
60     /**
61      *
62      * @param args
63      * @throws IOException
64      *             IO异常直接抛出了
65      * @author bls
66      */
67     public static void main(String[] args) throws IOException {
68         String sourceFilePath = "D://img//di.png";
69         String waterFilePath = "D://img//ceng.png";
70         String saveFilePath = "D://img//new.png";
71         NewImageUtils newImageUtils = new NewImageUtils();
72         // 构建叠加层
73         BufferedImage buffImg = NewImageUtils.watermark(new File(sourceFilePath), new File(waterFilePath), 0, 0, 1.0f);
74         // 输出水印图片
75         newImageUtils.generateWaterFile(buffImg, saveFilePath);
76     }
77 }
时间: 2024-10-17 21:32:25

JAVA实现图片叠加效果的相关文章

Java实现图片裁剪预览功能

Java实现图片裁剪预览功能 在项目中,我们需要做些类似头像上传,图片裁剪的功能,ok看下面文章! 需要插件:jQuery Jcrop 后端代码: package org.csg.upload; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import 

Java 实现图片等比例缩略图 (Thumbnailator + Jsp+SpringMVC)

Web应用为上传图片生成缩略图是常见的基本功能,通过缩略图生成提高了信息浏览时的性能,在保证用户使用体验的同时减少了数据传输量.本次以实例的方式,讲解如何使用使用Java实现图片等比例缩略图生成功能. 效果查看 代码编写 Thumbnailator 是一个为Java界面更流畅的缩略图生成库.从API提供现有的图像文件和图像对象的缩略图中简化了缩略过程,两三行代码就能够从现有图片生成缩略图,且允许微调缩略图生成,同时保持了需要写入到最低限度的代码量. 1.导入相关的包 2.配置web.xml we

Java绘制图片生成图片文件进行预览

Java绘制图片并实现打印前生成图片文件进行预览, 适用于开发阶段. 如果要使用界面完成预览,请另找资源.这里用这个功能主要是用于结果预览,因为如果使用打印来进行结果验证,会浪费大量的纸张. Java代码: import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;imp

Java对图片Base64转码--HTML对Base64解码

Java对图片Base64转码 package base64; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import sun.misc.BASE64Decod

java关于图片处理修改图片大小

最近做了一个关于图片浏览的内容.因为图片都是一些证件的资料的扫描件所以比较大,对系统的影响也是非常之大的,有很大可能直接把系统干死.那么我是这么处理的,给大家分享一下.如果大家有好的方案的话一定要早点告诉我. 需求简单介绍: 上传文件是压缩包,但是到查看资料的时候压缩包可下载本地看,同时也可以在系统中直接在线浏览. 设计方案 1 营业部用户上传图片文件压缩包文件到综合业务系统tomcat服务器,系统在tomcat服务器将压缩文件解压到系统临时目录. 2 系统分析解压的图片文件(文件名上有分类和序

java 获取图片大小(尺寸)

1,获取本地图片大小(尺寸) File picture=new File(strSrc);BufferedImage sourceImg=ImageIO.read(new FileInputStream(picture)); sourceImg.getWidth(); sourceImg.getHeight(); 2,获取网络图片大小(尺寸) BufferedImage sourceImg=ImageIO.read(new URL(strSrc).openStream()); sourceImg

Java使用图片自定义登录窗体

一.问题概述 Java是一门面向对象的编程语言,从出版至今,Java对其自身不断改进,Java的图形界面编程也做的越来越好,从AWT到更高级的Swing.但是,我们的需求永远是无法满足的,有时候我们需要自定义窗体,特别是一张漂亮的图片做一个窗体,那就再好不过了.那么,今天我就把用图片自定义应用窗体的方法分享给大家. 二.实现方法 1.用图片自定义应用窗体效果图: 图1 Java使用图片自定义应用窗体效果图 2.创建一个类继承Swing中JFrame,然后定义一个BufferedImage变量,用

java实现图片与base64字符串之间的转换

java实现图片与base64字符串之间的转换 package com.zxc.testjava.ant; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import sun.misc.BASE64Decoder; import sun.misc

Java 裁剪图片

package com.test; import java.awt.image.BufferedImage; import java.io.File; import javax.imageio.ImageIO; public class Test { private static final double WORK_LOAD_FACTOR = 0.265; private static final double LANCZOS_SUPPORT = 3; private static final