Servlet(JSP)中动态生成JPG PNG透明 水印图像
部分内容摘自互联网,选择精华部分摘入,并加入自己实践内容,记录下,方便后人,方便自己!
1. 生成JPG图片
response.setContentType("image/jpeg");
int width = 32, height = 18;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
g.setColor(Color.white);
g.fillRect(0,0, width, height);
g.setColor(Color.red);
g.drawOval(0, 0, width, height);
ServletOutputStream out = response.getOutputStream();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close()
类似这种效果:
白色底,显的质量也不咋的!
2. 生成透明的PNG图片
response.setContentType("image/png");
int width = 32;
int height = 18;
// 创建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(2));
g2d.drawLine(1, height-3, width-1, height-3);
g2d.drawString(strReqNum, width/2-4, height/2);
//释放对象
g2d.dispose();
// 保存文件
ImageIO.write(image, "png", response.getOutputStream());
这个效果还不错,比较满意!
3 水印效果
水印效果用的也比较多, 随便写个例子。
response.setContentType("image/png");
// 获取水印原图
String temp = request.getSession().getServletContext().getRealPath("");
String filePath = temp + "/image/S.gif";
// 水印文件
BufferedImage theImg = ImageIO.read(new File(filePath));
int width = theImg.getWidth(null);
int height = theImg.getHeight(null);
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
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.setColor(Color.white);
g2d.drawImage(theImg, 0, 0, null);
g2d.setFont(new Font("宋体", Font.BOLD, 48)); // 第二个参数更改粗斜体...粗体和斜体(Font.BOLD|Font.ITALIC)
g2d.drawString("syx", width / 8, height / 2); // 添加水印的文字和设置水印文字出现的内容
g2d.dispose();
ImageIO.write(image, "png", response.getOutputStream());
还有一种就是图片上贴图片,如果想贴透明的必须源图片也是透明最好PNG的,在再添加水印的代码中部分修改下,加上类似
g2d.drawImage(img, x, y, width, height, null)
这种代码应该就可以了,没试过不知道透明效果给力不!
因文章字数限制,就不贴上图片贴图片代码了!
Servlet(JSP)中动态生成JPG PNG透明 水印图像相关推荐
- 在JSP中动态生成随机验证码,登录时后台校验验证码,以及如何避免同一个验证码被重复提交爆破密码...
只需几步就可以生成动态随机的验证码,最终效果如下图: 一 前台显示页面login.jsp 其中验证码显示的是一张图片,链接指向的是生成验证码的servlet,同时点击图片后触发changeImg()这 ...
- jsp中动态include与静态include的区别
JSP中动态INCLUDE与静态INCLUDE的区别 动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" f ...
- JSP中动态includ与静态includ的区别
JSP中动态INCLUDE与静态INCLUDE的区别? 动态INCLUDE用jsp:include动作实现 <jsp:include page="included.jsp" ...
- word文档中动态生成excel表格(基金公告系列讲解)
1.本博文仅为了将之前工作中动态生成XBRL文件需求中word文档动态生成excel部分进行了实现(虽然隔着时间比较久),闲暇之余的考虑,应对大批量文件生成时可采用定时任务+多线程技术+redis队列 ...
- android 动态显示表格,在Android Studio中动态生成并显示表格
我在Android上创建我的第一个应用程序,因此我有低开发android应用程序的经验,而且我也是第一次使用java.在Android Studio中动态生成并显示表格 我想要什么? 我想从Array ...
- R语言使用keras包实现卷积自动编码器模型(Convolutional Autoencoder)、加载keras自带的mnist数据集、训练中动态生成每个epoch后模型训练的loss曲线
R语言使用keras包实现卷积自动编码器模型(Convolutional Autoencoder).加载keras自带的mnist数据集.训练中动态生成每个epoch后模型训练的loss曲线 目录
- 使用POI在Excel中动态生成图表工具类(支持柱状、组合、环状图、折线图、等常用图)
使用POI在Excel中动态生成图表工具类 使用POI在Excel中动态生成图表工具类 由于公司是一个生成报表的机构,之前一直使用pageOffice,但是公司领导就是不买,你说公司那样有钱磨磨唧唧干 ...
- php中type的格式,javascript – 在php中动态生成的输入[type = date]格式值
我有一个动态生成值的输入 为了支持html5日期输入,日期格式为yyyy-mm-dd分配给该值,mm / dd / yyyy格式正确显示在html5浏览器中. 问题出现在非html5浏览器上,其中赋值 ...
- 安卓中动态生成界面布局
在项目设计和安卓程序开发过程中有时候我们需要试用编程动态生成界面,这样的好处是可以先读取屏幕大小然后动态生成满足屏幕大小的程序,本例的程序最终实现效果如下:例子为一个点菜初界面,左右滑动手指可以实现菜 ...
最新文章
- 大话设计模式之装饰模式
- flutter 一行代码取消 返回按钮
- Pycharm中Python3连接Oracle
- 7.MongoDB java CRUD
- Centos+Nginx+PHP7.0编译安装(和PHP5.6老版本共存)
- H5-localStorage数据存储总结
- KeyMob应用开发者服务平台帮助开发者推广和盈利
- n76e885_新唐N76E003,N76E616烧录,调试各种问题集【坑集】
- 第七十五期:Java 2019 生态圈使用报告,这结果你赞同吗?
- python文本词频统计是什么_python 大批量文本分词 以及词频统计 (高效处理案例)...
- node配置ssl证书_在Linux服务器上部署node项目(git部署,forever持续运行,配置SSL证书)...
- OpenShift ocp packages
- 利用GPU加速的软件
- 动态规划—代码查重实验
- VS2017--无法添加引用--提示“未能完成操作。不支持此接口”
- 算法刷题记录(Day 73)
- 2018年买华硕笔记本 安装 Fedora 28,pcieport errors flood the journal
- 装机记录Win10专业版可以做的事……
- 成长中必知的20个故事[转]
- 直立代码分析__两轮平衡小车原理
热门文章
- AndroidStudio安卓原生开发_UI控件_TextView_Button_EditText---Android原生开发工作笔记97
- has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present---nginx工作笔记006
- GIT版本管理异常总结001---copssh安装后登录异常The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
- How can I force Python's file.write() to use the same newline format in Windows as in Linux (“\r\n”
- 杭电1259ZJUTACM
- MySql表结构修改详解
- String和ByteBuffer互转
- 3d激光雷达开发(icp匹配)
- win32开发(简单绘图)
- 从汇编的眼光看C++(之delete内存泄露)