一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

java如何處理圖片水印

科技綠洲 ? 來(lái)源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-09 16:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在項(xiàng)目中經(jīng)常有需要在圖片上添加水印的需求以及在某些場(chǎng)合下需要身份證圖片,這時(shí)就可以對(duì)身份證上加水印防止被用于其他用途,java 在處理圖片水印時(shí)不需要額外的第三方包,使用 BufferedImage 和 Graphics2D 就可以搞定

讀取圖片

讀取圖片非常簡(jiǎn)單,使用 ImageIO 讀取 file 文件就行了。

File imageFile = new File("img.png");
Image src = ImageIO.read(imageFile);
int width = src.getWidth(null);
int height = src.getHeight(null);

添加水印

Image 類是一個(gè)抽象類,無(wú)法被直接創(chuàng)建,我們可以使用 BufferedImage 讀取緩存中的圖像數(shù)據(jù)。Graphics2D 類繼承于 Graphics 類,Graphics2D 類是 java 渲染文字及圖片的基礎(chǔ)類,提供了對(duì)繪制、填充、旋轉(zhuǎn)和定義顏色的支持。

//創(chuàng)建指定大小,指定圖像類型的 BufferedImage 對(duì)象
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//創(chuàng)建 Graphics2D 對(duì)象
Graphics2D graphics2D = bufferedImage.createGraphics();
graphics2D.drawImage(src, 0, 0, width, height, null);

接下來(lái)就是創(chuàng)建水印的字體、顏色了,如果水印文字在右邊的話,我們需要知道文字的長(zhǎng)度。

//設(shè)置字體和顏色
graphics2D.setColor(Color.lightGray);

Font font = new Font("宋體", Font.PLAIN, 20);
graphics2D.setFont(font);
//獲取文字長(zhǎng)度
FontMetrics fontMetrics = graphics2D.getFontMetrics(font);
int len = fontMetrics.stringWidth("這里是水印");
graphics2D.drawString("這里是水印", width - len - 10, height - 10);
graphics2D.dispose();

保存圖片

最后使用 FileOutputStream 和 ImageIO.write() 保存圖片。

try(FileOutputStream outputStream = new FileOutputStream("0.png")) {
    ImageIO.write(bufferedImage, "png", outputStream);
}

添加圖片水印

添加圖片水印更是簡(jiǎn)單,不再需要設(shè)置字體和顏色,直接使用 graphics2D.drawImage() 方法。

File waterMarkFile = new File("E:pdfProjectsrcmainjavawaterMark.png");
Image waterMarkImg = ImageIO.read(waterMarkFile);
int waterMarkWidth = waterMarkImg.getWidth(null);
int waterMarkHeight = waterMarkImg.getHeight(null);
graphics2D.drawImage(waterMarkImg,width - waterMarkWidth - 10, height - waterMarkHeight - 10,waterMarkWidth, waterMarkHeight, null);
try(FileOutputStream outputStream = new FileOutputStream("1.png")) {
    ImageIO.write(bufferedImage, "png", outputStream);
}

總結(jié)

BufferedImage 和 Graphics2D 還可以做其他事情,比如對(duì)表情包添加文字等。大家都可以去試試,做出自己的實(shí)用工具庫(kù)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2989

    瀏覽量

    109826
  • 圖像數(shù)據(jù)
    +關(guān)注

    關(guān)注

    0

    文章

    54

    瀏覽量

    11489
  • 緩存
    +關(guān)注

    關(guān)注

    1

    文章

    246

    瀏覽量

    27185
  • File
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    14532
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    dede的水印圖片文字顏色,無(wú)論如何設(shè)置都是黑色?

    dede的水印圖片文字顏色,無(wú)論如何設(shè)置都是黑色?試了N種方法搞不好,誰(shuí)有好的方法啊。。
    發(fā)表于 05-15 10:02

    紅外熱像儀成像后圖片何處理

    在紅外熱像儀成像后,圖片何處理。就是利用前后倆張圖片如何比較
    發(fā)表于 12-06 19:10

    如何刪除pdf文件中的水印 刪除pdf中水印的方法

    點(diǎn)擊“是”,即可去除PDF文件中的文字水印。  是不是操作簡(jiǎn)單,借助迅捷PDF編輯器幾步即可輕松去除PDF文件的文字水印。這款軟件不僅僅可以對(duì)PDF文件中的文本內(nèi)容進(jìn)行編輯,還可以對(duì)圖片、多媒體等內(nèi)容進(jìn)行
    發(fā)表于 07-24 11:39

    迷你圖片處理工具

    圖片處理工具,可以修改圖片編碼格式,能夠處理JAVA不能識(shí)別的圖片。
    發(fā)表于 03-24 14:52 ?4次下載

    JAVA教程之圖片的拖動(dòng)處理

    JAVA教程之圖片的拖動(dòng)處理,很好的學(xué)習(xí)資料。
    發(fā)表于 03-31 11:13 ?7次下載

    JAVA教程之用applet顯示圖片

    JAVA教程之用applet顯示圖片,很好的JAVA的資料,快來(lái)學(xué)習(xí)吧
    發(fā)表于 04-11 17:14 ?5次下載

    JAVA教程之圖片火焰效果

    JAVA教程之圖片火焰效果,很好的JAVA的資料,快來(lái)學(xué)習(xí)吧
    發(fā)表于 04-11 17:14 ?5次下載

    JAVA教程之圖片倒影

    JAVA教程之圖片倒影,很好的JAVA的資料,快來(lái)學(xué)習(xí)吧
    發(fā)表于 04-11 17:14 ?5次下載

    JAVA教程之圖片翻折

    JAVA教程之圖片翻折,很好的JAVA的資料,快來(lái)學(xué)習(xí)吧
    發(fā)表于 04-11 17:14 ?2次下載

    JAVA教程之半透明圖片

    JAVA教程之半透明圖片,很好的JAVA的資料,快來(lái)學(xué)習(xí)吧
    發(fā)表于 04-11 17:14 ?1次下載

    JAVA教程之圖片旋轉(zhuǎn)

    JAVA教程之圖片旋轉(zhuǎn),很好的JAVA的資料,快來(lái)學(xué)習(xí)吧
    發(fā)表于 04-11 17:28 ?2次下載

    結(jié)合可視密碼和數(shù)字水印圖片版權(quán)保護(hù)方案

    數(shù)字作品的拷貝較為容易,倘若多方擁有版權(quán)的數(shù)字作品在多用戶合作之間,若其版權(quán)問(wèn)題處理不當(dāng),勢(shì)必會(huì)引起各種矛盾和商業(yè)糾紛等問(wèn)題。設(shè)計(jì)一種結(jié)合可視密碼、數(shù)字水印圖片版權(quán)保護(hù)方案,在不破壞視覺(jué)效果
    發(fā)表于 12-11 17:04 ?0次下載
    結(jié)合可視密碼和數(shù)字<b class='flag-5'>水印</b>的<b class='flag-5'>圖片</b>版權(quán)保護(hù)方案

    pcb抄板如何處理掃描圖片_pcb抄板處理掃描圖片的步驟教程詳解

     PCB史板一個(gè)重要的過(guò)程就是將電路板實(shí)物的電路轉(zhuǎn)換為可電腦處理的PCB線路文件實(shí)現(xiàn)這個(gè)過(guò)程的一個(gè)環(huán)節(jié)便是將實(shí)物掃描并處理掃描圖片,本文將詳細(xì)介紹如何處理PCB護(hù)板掃描
    發(fā)表于 05-04 17:45 ?1.4w次閱讀
    pcb抄板如<b class='flag-5'>何處理</b>掃描<b class='flag-5'>圖片</b>_pcb抄板<b class='flag-5'>處理</b>掃描<b class='flag-5'>圖片</b>的步驟教程詳解

    Linux開(kāi)發(fā)_介紹BMP圖片上下翻轉(zhuǎn)、添加水印

    介紹BMP圖片上下翻轉(zhuǎn)、添加水印、通過(guò)學(xué)習(xí)BMP圖片結(jié)構(gòu)學(xué)習(xí)文件編程。
    的頭像 發(fā)表于 09-17 15:43 ?2316次閱讀

    Linux開(kāi)發(fā)_BMP圖片編程(翻轉(zhuǎn)、添加水印)

    接收BMP圖片編程,完成BMP圖片翻轉(zhuǎn)、水印添加等知識(shí)點(diǎn)。
    的頭像 發(fā)表于 09-17 15:33 ?1977次閱讀
    Linux開(kāi)發(fā)_BMP<b class='flag-5'>圖片</b>編程(翻轉(zhuǎn)、添加<b class='flag-5'>水印</b>)