Java图片水印生成器代码 - 批量给自己的网站图片加水印
Java图片水印生成器代码 - 批量给自己的网站图片加水印
最近在做一款APP,App中的图片是自己一个个的画出来的,为了保证图片不被盗用和处理,所以就需要加上水印防盗。这跟CSDN一样。
注意事项:1. 我是在window7 + eclipse 下完成的
2. eclipse中项目的JRE System Library需要配置为JDK,要不然会提示缺少类库
3. 我之所以用图片水印而不是文字水印,是因为文字水印太麻烦且得不到想要的效果。
4. 用图片水印时,需要将文字改成图片的解决方案是通过网上搜索,搜索在线水印生成就可以了。我推荐这个网站:http://www.qt86.com/changyong.php
需求:将一个文件夹内的所有图片加上水印输出到另外一个文件夹。
设计:开发一个Java类,输入目录地址、输出目录地址、水印文件、水印旋转角度,将一个目录的所有图片加上水印后存储到另外一个目录。
实现:
一、根据文件内容生成水印文件
登录:http://www.qt86.com 网站,例如输入:软考大师 www.ruankaods.com看看格式,最好能用多排,并错开,这样在合并文件的时候,看到的效果是最好的。
注意,在点击生成前,请在【背景栏】选择透明背景,字色也应该选一个灰色的,如果一行内容太多就要选择小型字,要不生成的图片中水印文字会自动换行,导致水印文件会很难看。当然,具体的内容还是要自己根据需求调整了。
二、编写代码,将水印文件与源文件合并,生成带水印的文件。
下面的代码是批量将一个目录中的文件都加水印,如果你只是改一个文件也可以实现。
import java.awt.AlphaComposite;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
public class ImageWatermark { /** * 给图片添加水印* @param watermarkFilePath 水印图片路径 * @param srcImagePath 源图片路径 * @param targerImagePath 目标图片路径 * @param degree 水印图片旋转角度 */ public static void addImageWatermark(String watermarkFilePath, String srcImagePath, String targerImagePath, Integer degree) { OutputStream os = null; try { Image srcImage = ImageIO.read(new File(srcImagePath)); BufferedImage graphics = new BufferedImage(srcImage.getWidth(null), srcImage.getHeight(null), BufferedImage.TYPE_INT_RGB); // 得到画布对象 Graphics2D g = graphics.createGraphics(); // 设置对线段的锯齿状边缘处理 g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); g.drawImage(srcImage.getScaledInstance(srcImage.getWidth(null), srcImage.getHeight(null), Image.SCALE_SMOOTH), 0, 0, null); if (null != degree) { // 设置水印旋转角度及坐标 g.rotate(Math.toRadians(degree), (double) graphics.getWidth() / 2, (double) graphics.getHeight() / 2); } // 水印图象的路径 (如果需要设置透明度需要gif或者png格式的图片 )ImageIcon imgIcon = new ImageIcon(watermarkFilePath); // 得到Image对象。 Image image = imgIcon.getImage(); // 透明度 float alpha = 0.25f;g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, alpha)); // 表示水印图片的位置 g.drawImage(image, 20, 30, null); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); g.dispose(); os = new FileOutputStream(targerImagePath); // 生成图片 (可设置 jpg或者png格式)ImageIO.write(graphics, "png", os); } catch (Exception e) { e.printStackTrace(); } finally { try { if (os != null) {os.close(); }} catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) {File f = new File("D:\\图片\\全部图片");File[] p = f.listFiles();
// for(File file : p){
// System.out.println(file.getName());
// }for (File photo : p) {if(!photo.isDirectory()){ImageWatermark.addImageWatermark("C:/water.png",photo.getPath(),"D:\\图片\\全部图片\\target\\" + photo.getName() , -15);}}System.exit(0);}
}
三、效果图
大家可以看到,软考大师 ruankaods.com的图片水印正式加入到刚才的图片中了。
Java图片水印生成器代码 - 批量给自己的网站图片加水印相关推荐
- php网页中不能上传图片,为什么我的PHP图片上传代码可以实现插入数据库但图片不能插入文件夹中?...
为什么我的PHP图片上传代码可以实现插入数据库但图片不能插入文件夹中? 关注:167 答案:4 mip版 解决时间 2021-01-19 00:58 提问者慢慢学会遗忘 2021-01-18 00 ...
- 如何用手机打开dcm格式图片_如何防止自己的图片被盗用?这 4 招教你优雅加水印...
出门旅游一趟,好不容易拍到一组相当满意的图片.想要把这些图片上传到社交平台,如何才能让大家一看就知道这是自己拍的作品,同时又防止盗图呢? 答案是在图片上加上自己的水印,这次有用功将和大家分享下,如何快 ...
- linux批量修改压缩图片大小,linux shell批量压缩某个目录下图片大小
linux shell批量压缩某个目录下图片大小 #!/bin/sh read -p "Input Path:" SPATH maxsize=$((1024*200)) FILEL ...
- 图片加水印怎么弄?分享三个简单的加水印方法给你
辛苦制作的图片刚发上网就被别人盗用了,谁懂啊,真的很膈应!在经历了数次这样的情形之后,我终于学聪明了,每次做完图都不忘打上水印. 今天就给大家分享三个简单的方法,手把手教你图片加水印怎么弄! 一.使用 ...
- 上传图片自动加水印html,帝国cms用户前台投稿上传图片自动加水印的实现方法...
帝国7.0 前台编辑器增加 上传图片加水印功能! 我的是最新版 ecms 7.0 utf-8 : 修改 e/class/qinfofun.php 的第1225行 复制代码代码如下: if($type ...
- php制作水印案例,PHP实例程序:实现给上传图片加水印图案的做法总结
c语言编程以下为引用的内容: PHP_SELF']?>" method="post" enctype="multipart/form-data" ...
- 运维实践-使用WebP Server Go无缝转换图片为Google的webp格式让你网站访问加载速度飞起来...
关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 本章目录: 0x00 快速入门 WebP 介绍 Webp-Server 介绍 0x01 安装实 ...
- 视频怎么加水印?带你了解下怎么给视频加水印
现在许多人会通过创作视频来获取关注和收益,他们为了避免视频被盗用,都会在自己的视频上面添加水印,再进行发布.那你们知道怎么给视频加水印吗?下面我将分享几种实用的方法给大家,还不知道的小伙伴快跟我一起往 ...
- php批量采集电视剧,如何通过PHP多线程批量采集下载远程网站图片代码实例
/** * curl 多线程 * @author http://www.lai18.com * @param array $array 并行网址 * @param int $timeout 超时时间 ...
最新文章
- 搭建通用性多用户后台-思路
- Windows中非常实用的命令
- 今天学习啦所谓的高级语言啦
- 计算机广告制作未来发展还行吗,计算机多媒体设计专业和广告设计制作那个好...
- AE插件Stardust for mac(最强粒子特效)
- ts watch路由 参数变化_TypeScript基础(六):TS 在 Vue 中的用法,data,生命周期,methods,computed,props,watch,$emit...
- Django复习:视图和模版
- 一个 8 岁的“前端老人”
- idea中springBoot项目修改html之类的文件后服务不自动更新
- 计算机考研804是什么意思,北邮通信考研专业课801和804的选择
- 概率论基础——概率论公理
- 【QBKbupt】洛谷P2525Uim的情人节礼物·其之壱
- IDEA画Use Case(用例图)
- 服务器IIS6/IIS7、Nginx、Apache屏蔽垃圾爬虫UA禁止垃圾爬虫,屏蔽指定UA
- python爬取代理IP并进行有效的IP测试
- 火车时刻表又更新了!
- 如何使用IOS自动化测试工具UIAutomation
- 卫士处刑者冠军css3边,流放之路职业开荒路 决斗者冠军双持刀刃乱舞
- 企业获客的五种方式解读
- 谷歌携Chromebox会议套件进入视频会议市场