最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何利用Java在圖片上添加文字水印效果

 更新時間:2022年01月14日 11:52:58   作者:zyqok  
最近發(fā)現(xiàn)經(jīng)常被別的網(wǎng)站盜用,而且不注明出處,因此不得不加上水印,這篇文章主要給大家介紹了關(guān)于如何利用Java在圖片上添加文字水印效果的相關(guān)資料,需要的朋友可以參考下

前言

今天分享一個:通過Java代碼,給圖片添加文字。

比如下面這個圖片,我們在左下角就添加了一個文字版的水印,那么這是如何實現(xiàn)的呢 ?

【1】獲取原圖片對象

首先,第一步,肯定是要讓我們的程序,拿到需要處理的圖片。

我們程序獲取圖片的方式,通常有兩種,一種是通過下載到本地,從本地讀??;另外一種就是通過網(wǎng)絡(luò)地址進行獲取。

(1.1)讀取本地圖片

比如,我們將圖片下載到了我們計算機本地(E:\imgs目錄下),那么我們直接在main函數(shù)中,通過下面這段代碼,就可以獲取到圖片對象。

// 讀取圖片文件
File file = new File("E:/imgs/test.png");
System.out.println("圖片名稱:" + file.getName());
System.out.println("圖片大?。? + file.length() / 1024 + " kb");
// 將文件對象轉(zhuǎn)化為圖片對象
BufferedImage image = ImageIO.read(file);
System.out.println("圖片寬度:" + image.getWidth() + " px");
System.out.println("圖片高度:" + image.getHeight() + " px");

 代碼效果如下:

(1.2)讀取網(wǎng)絡(luò)圖片

如果圖片是一個網(wǎng)絡(luò)圖片,我們可以直接獲取它的地址進行下載,相關(guān)代碼如下(網(wǎng)絡(luò)圖片的名稱和類型,取決于下載者)。

URL url = new URL("https://zyq2022.oss-cn-chengdu.aliyuncs.com/test.png");
BufferedImage image = ImageIO.read(url.openStream());
System.out.println("圖片寬度:" + image.getWidth() + " px");
System.out.println("圖片高度:" + image.getHeight() + " px");

代碼效果如下:

【2】創(chuàng)建畫筆

經(jīng)過上面的描述,我們已經(jīng)獲取到了原始圖片,接下來我們還需要創(chuàng)建一個畫筆,后面我們寫出的文字樣式,完全則由它來決定。它可以設(shè)置顏色,字體大小,字體樣式等。

// 創(chuàng)建畫筆(image為上一步的圖片對象)
Graphics2D pen = image.createGraphics();
// 設(shè)置畫筆顏色為白色
pen.setColor(Color.WHITE);
// 設(shè)置畫筆字體樣式為微軟雅黑,斜體,文字大小為20px
pen.setFont(new Font("微軟雅黑", Font.ITALIC, 20));

相關(guān)說明:

(1) pen.setColor(Color.WHITE); 

這行代碼的意思是將畫筆顏色設(shè)置為白色。

其他顏色還有:WHITE(白色)、LIGHT_GRAY(淺灰色)、GRAY(灰色)、DARK_GRAY(深灰色)、BLACK(黑色)、RED(紅色)、PINK(粉紅色)、ORANGE(橘黃色)、YELLOW(黃色)、GREEN(綠色)、MAGENTA(紫紅色)、CYAN(青色)、BLUE(藍色)

如果上面顏色都不滿足你,或者你還想設(shè)置下字體透明度,你可以改為如下格式:

pen.setColor(new Color(179, 250, 233, 100));

這里的四個參數(shù)分別為 RGBA(不懂RGBA的點這里),四個參數(shù)的范圍均是0-255;

(2)pen.setFont(new Font("微軟雅黑", Font.ITALIC, 20));

Font.PLAIN(正常),F(xiàn)ont.BOLD(粗體),F(xiàn)ont.ITALIC(斜體)

【3】添加文字水印

下面這行代碼就是添加文字水印的核心代碼。

// 這三個參數(shù)分別為你的文字內(nèi)容,起始位置橫坐標(biāo)(px),縱坐標(biāo)位置(px)。
pen.drawString("我是圖片水印", 30, 550);

(3.1)如何確定水印位置 ?

首先,大家要明白,我們在說圖片上的坐標(biāo),它一個表示法,具體如下:

那么,我們?nèi)绾未_定我們水印的圖片其實坐標(biāo)呢?

我們可以將圖片首先保存到本地,然后右鍵單擊,選擇畫圖工具類打開它。

 打開后,我們將鼠標(biāo)光標(biāo)移動到我們需要添加文字的地方(如紅色箭頭處),則底部就會顯示對應(yīng)位置的坐標(biāo)(藍色箭頭處),那么這個坐標(biāo)我們就可以拿到,然后寫入到程序代碼里了。

【4】獲取處理圖片

經(jīng)過上面三次操作后,我們的圖片添加文字就已經(jīng)處理完成了,但他現(xiàn)在還保存在Java對象中,我們需要將他保存到本地,我們才能看得到效果(如:這里我將處理的圖片保存到 test2.png 中)。

// 創(chuàng)建新圖片文件
File file = new File("E:/imgs/test2.png");
// 將處理好的圖片數(shù)據(jù)寫入到新圖片文件中
FileOutputStream fos = new FileOutputStream(file);
ImageIO.write(image, "png", fos);

最后執(zhí)行代碼,我們看到在原圖片文件夾下,多了一個 test2.png 的圖片。

 我們打開 test2.png 圖片后,可以看到文字水印已經(jīng)添加成功了。

【5】源代碼

最后將前面解讀的整個源碼放在下面,供大家參考:

package com.zyq.util;
 
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
 
import javax.imageio.ImageIO;
 
public class ImgTest {
 
    public static void main(String[] args) throws IOException {
        // 讀取本地圖片文件
        // File file = new File("E:/imgs/test.png");
        // System.out.println("圖片名稱:" + file.getName());
        // System.out.println("圖片大小:" + file.length() / 1024 + " kb");
        // 將文件對象轉(zhuǎn)化為圖片對象
        // BufferedImage image = ImageIO.read(file);
        // 獲取網(wǎng)絡(luò)圖片
        URL url = new URL("https://zyq2022.oss-cn-chengdu.aliyuncs.com/test.png");
        BufferedImage image = ImageIO.read(url.openStream());
        // 創(chuàng)建畫筆
        Graphics2D pen = image.createGraphics();
        // 設(shè)置畫筆顏色為白色
        // pen.setColor(Color.WHITE);
        pen.setColor(new Color(179, 250, 233, 200));
        // 設(shè)置畫筆字體樣式為微軟雅黑,斜體,文字大小為20px
        pen.setFont(new Font("微軟雅黑", Font.ITALIC, 20));
        // 寫上水印文字和坐標(biāo)
        pen.drawString("我是圖片水印", 30, 550);
        // 創(chuàng)建新圖片文件
        File file = new File("E:/imgs/test2.png");
        // 將處理好的圖片數(shù)據(jù)寫入到新圖片文件中
        FileOutputStream fos = new FileOutputStream(file);
        ImageIO.write(image, "png", fos);
    }
}

總結(jié)

到此這篇關(guān)于如何利用Java在圖片上添加文字水印效果的文章就介紹到這了,更多相關(guān)Java圖片加文字水印內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的Set集合源碼詳細(xì)解讀

    Java中的Set集合源碼詳細(xì)解讀

    這篇文章主要介紹了Java中的Set集合源碼詳細(xì)解讀,Set注重獨一無二的性質(zhì),該體系集合用于存儲無序(存入和取出的順序不一定相同)元素, 值不能重復(fù),需要的朋友可以參考下
    2023-11-11
  • Hibernate緩存詳解

    Hibernate緩存詳解

    本文主要介紹了Hibernate緩存的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 關(guān)于java中Map的九大問題分析

    關(guān)于java中Map的九大問題分析

    這篇文章主要為大家詳細(xì)分析了關(guān)于java中Map的九大問題,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Mybatis映射文件根標(biāo)簽與子標(biāo)簽示例講解

    Mybatis映射文件根標(biāo)簽與子標(biāo)簽示例講解

    這篇文章主要介紹了Mybatis映射文件根標(biāo)簽與子標(biāo)簽,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • java分布式流式處理組件Producer分區(qū)理論

    java分布式流式處理組件Producer分區(qū)理論

    這篇文章主要為大家介紹了java分布式流式處理組件Producer分區(qū)理論詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • java線程之線程的生命周期的使用

    java線程之線程的生命周期的使用

    本篇文章介紹了,java線程之線程的生命周期的使用。需要的朋友參考下
    2013-05-05
  • MyBatis如何通過xml方式實現(xiàn)SaveOrUpdate

    MyBatis如何通過xml方式實現(xiàn)SaveOrUpdate

    這篇文章主要講如何通過xml方式實現(xiàn)SaveOrUpdate,但是仍然建議在Service中實現(xiàn),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-06-06
  • mybatis update set 多個字段實例

    mybatis update set 多個字段實例

    這篇文章主要介紹了mybatis update set 多個字段實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • IDEA使用properties配置文件進行mysql數(shù)據(jù)庫連接的教程圖解

    IDEA使用properties配置文件進行mysql數(shù)據(jù)庫連接的教程圖解

    Properties類是 鍵和值均為字符串的可以永久存儲到文件中的key-value集合。這篇文章主要介紹了IDEA使用properties配置文件進行mysql數(shù)據(jù)路連接 ,需要的朋友可以參考下
    2018-10-10
  • springboot使用小工具之Lombok、devtools、Spring Initailizr詳解

    springboot使用小工具之Lombok、devtools、Spring Initailizr詳解

    這篇文章主要介紹了springboot使用小工具之Lombok、devtools、Spring Initailizr詳解,Lombok可以代替手寫get、set、構(gòu)造方法等,需要idea裝插件lombok,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10

最新評論

河南省| 根河市| 乐山市| 临潭县| 吉水县| 灵石县| 滨海县| 和硕县| 肇州县| 蒙山县| 横峰县| 延庆县| 寻甸| 那坡县| 同仁县| 哈尔滨市| 三门县| 临洮县| 虞城县| 江油市| 碌曲县| 平安县| 绩溪县| 田东县| 安岳县| 元江| 蕉岭县| 北宁市| 南投市| 泗阳县| 舟山市| 龙里县| 嘉荫县| 河源市| 安塞县| 南岸区| 沈丘县| 登封市| 榆社县| 响水县| 汝州市|