java实现给图片加水印
发布日期:2021-09-29 21:09:48
浏览次数:2
分类:技术文章
本文共 2911 字,大约阅读时间需要 9 分钟。
由于网上加水印需要RMB……,在别人的小轮子上面又改了改:
package club.housy.watermark.util;import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;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 javax.imageio.ImageIO;public class ImageUtil { public void mark(BufferedImage bufImg, Image img, String text, Font font, Color color, int x, int y) { RenderingHints rh=new RenderingHints(RenderingHints. KEY_ANTIALIASING, RenderingHints. VALUE_ANTIALIAS_ON); rh.put(RenderingHints.KEY_STROKE_CONTROL , RenderingHints.VALUE_STROKE_PURE); rh.put(RenderingHints.KEY_ALPHA_INTERPOLATION , RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY); Graphics2D g = bufImg.createGraphics(); g.setRenderingHints(rh); g.drawImage(img, 0, 0, bufImg.getWidth(), bufImg.getHeight(), null); g.setColor(color); g.setFont(font); g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); g.rotate(Math.toRadians(15), (double) bufImg.getWidth() / 2, (double) bufImg.getHeight() / 2); g.drawString(text, x, y); g.dispose(); } public void mark(String imgPath, String outImgPath, String text, Font font, Color color, int x, int y) { try { // 读取原图片信息 File imgFile = null; Image img = null; if (imgPath != null) { imgFile = new File(imgPath); } if (imgFile != null && imgFile.exists() && imgFile.isFile() && imgFile.canRead()) { img = ImageIO.read(imgFile); } int imgWidth = img.getWidth(null); int imgHeight = img.getHeight(null); // 加水印 BufferedImage bufImg = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB); mark(bufImg, img, text, font, color, x, y); // 输出图片 FileOutputStream outImgStream = new FileOutputStream(outImgPath); ImageIO.write(bufImg, "jpg", outImgStream); outImgStream.flush(); outImgStream.close(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Font font = new Font("微软雅黑", Font.BOLD, 24); // for(int i = 1; i <= 33; i ++) // new ImageUtil().mark("D:/Pictures/linux/sy1/sy1 (" + i + ").png", "D:/Pictures/linux/sy1/watermark/sy1 (" + i + ").png", "XXXX", font, Color.ORANGE, 350, 150); for(int i = 1; i <= 23; i ++) new ImageUtil().mark("D:/Pictures/linux/sy2/sy2 (" + i + ").png", "D:/Pictures/linux/sy2/watermark/sy2 (" + i + ").png", "XXX", font, Color.ORANGE, 100, 80); } }
转载地址:https://blog.csdn.net/hou_shiyu/article/details/105723120 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年03月27日 00时26分02秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
我们需要什么样的敏捷开发?
2019-04-27
苹果公司联系邮箱大全
2019-04-27
软件项目为何会失败?
2019-04-27
phoneGap Android开发环境搭建
2019-04-27
PhoneGap 在 Android 上的插件开发方法
2019-04-27
如何用 纯C++(ndk)开发安卓应用
2019-04-27
基于XMPP协议的Android即时通信系
2019-04-27
Unity3D 渲染路径
2019-04-27
Xcode9 新功能
2019-04-27
Xcode 在读写上提速100倍
2019-04-27
Havok物理引擎与Unity3D的结合
2019-04-27
C++17中那些值得关注的特性(上)
2019-04-27
Unity移动端动态阴影
2019-04-27
Eclipse接入第三方动态库.so方案
2019-04-27
Android .SO 文件的兼容和适配
2019-04-27
cocos2dx luabinding C/C++/LUA部分
2019-04-27
rapidjson使用总结
2019-04-27
cocos2dx-lua在ios上实现生成及扫描二维码
2019-04-27
GoLang初探
2019-04-27
golang Leaf 游戏服务器框架简介
2019-04-27