日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

javaCV圖像處理系列: javaCV圖像處理之1:實時視頻添加文字水印并截取視頻圖像保存成圖片,實現文字水印的字體、位置、大小、粗度、翻轉、平滑等操作

javaCV圖像處理之2:實時視頻添加圖片水印,實現不同大小圖片疊加,圖像透明度控制

?

前言:

這是個很常用的操作,一般我們的網站在用戶上傳圖片時都會給圖片添加一個水印以防止其他站點盜圖的行為

實現功能:①給圖片增加文字水印②給圖片增加圖片水印

一、核心功能實現:

1、添加文字水印

// 加文字水印public void mark(BufferedImage bufImg, Image img, String text, Font font, Color color, int x, int y) {Graphics2D g = bufImg.createGraphics();g.drawImage(img, 0, 0, bufImg.getWidth(), bufImg.getHeight(), null);g.setColor(color);g.setFont(font);g.drawString(text, x, y);g.dispose();}

2、添加圖片水印

// 加圖片水印public void mark(BufferedImage bufImg, Image img, Image markImg, int width, int height, int x, int y) {Graphics2D g = bufImg.createGraphics();g.drawImage(img, 0, 0, bufImg.getWidth(), bufImg.getHeight(), null);g.drawImage(markImg, x, y, width, height, null);g.dispose();}


以上兩個方法實現了最核心的功能:給圖片添加水印。

補充:

為什么要這么寫?

考慮到該方法不僅可以用于給圖片文件增加水印,而且還可以給視頻的每一幀圖像也添加,所以為了方便不同場合重復使用,去除了不必要的依賴關系。

有了核心的兩個方法就我們可以給圖片文件增加水印了

二、功能性實現

1、給圖片增加文字水印

/*** 給圖片增加文字水印* * @param imgPath*            -要添加水印的圖片路徑* @param outImgPath*            -輸出路徑* @param text-文字* @param font*            -字體* @param color*            -顏色* @param x*            -文字位于當前圖片的橫坐標* @param y*            -文字位于當前圖片的豎坐標*/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();}}


2、給圖片增加圖片水印

/*** 給圖片增加圖片水印* * @param inputImg*            -源圖片,要添加水印的圖片* @param markImg*            - 水印圖片* @param outputImg*            -輸出圖片(可以是源圖片)* @param width*            - 水印圖片寬度* @param height*            -水印圖片高度* @param x*            -橫坐標,相對于源圖片* @param y*            -縱坐標,同上*/public void mark(String inputImg, String markImg, String outputImg, int width, int height, int x, int y) {// 讀取原圖片信息File inputImgFile = null;File markImgFile = null;Image img = null;Image mark = null;try {if (inputImg != null && markImg != null) {inputImgFile = new File(inputImg);markImgFile = new File(markImg);}if (inputImgFile != null && inputImgFile.exists() && inputImgFile.isFile() && inputImgFile.canRead()) {img = ImageIO.read(inputImgFile);}if (markImgFile != null && markImgFile.exists() && markImgFile.isFile() && markImgFile.canRead()) {mark = ImageIO.read(markImgFile);}int imgWidth = img.getWidth(null);int imgHeight = img.getHeight(null);BufferedImage bufImg = new BufferedImage(imgWidth, imgHeight, BufferedImage.TYPE_INT_RGB);mark(bufImg, img, mark, width, height, x, y);FileOutputStream outImgStream = new FileOutputStream(outputImg);ImageIO.write(bufImg, "jpg", outImgStream);outImgStream.flush();outImgStream.close();} catch (IOException e) {e.printStackTrace();}}

3、測試一下效果

文字水印的字體和顏色需要自行定義,這里我們使用宋體,14號字體,顏色選擇橙色 - -!,坐標是x軸0,y軸等于字體的大小,也就是圖片的左上角。

public static void main(String[] args) {Font font = new Font("宋體", Font.PLAIN, 14);// 原圖位置, 輸出圖片位置, 水印文字顏色, 水印文字// new MarkText4J().mark("eguidMarkText2.jpg", "eguidMarkText2.jpg", "水印效果測試", font, Color.ORANGE, 0, 14);// 增加圖片水印new MarkText4J().mark("eguidMarkText2.jpg", "eguid.jpg", "eguidMarkText3.jpg", 40, 20, 0, 14);}
簡直棒極了,至此我們可以隨意的給圖片任意位置添加任意文字或者圖片水印了。

最后,額。。。導出的圖片比原本圖片還小是什么鬼?歡迎加入討論群一起討論:371249677。- -!








轉載于:https://www.cnblogs.com/eguid/p/6821579.html

總結

以上是生活随笔為你收集整理的用java实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。