亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java圖片添加水印實(shí)例代碼分享

 更新時(shí)間:2020年04月18日 10:40:26   作者:dy_smile  
這篇文章主要為大家詳細(xì)介紹了java圖片添加水印實(shí)例代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文為大家介紹了java圖片添加水印實(shí)例代碼,java實(shí)現(xiàn)水印還是非常方便的,水印可以是圖片或者文字,具體內(nèi)容如下

package michael.io.image; 
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.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.InputStream; 
import java.io.OutputStream; 
 
import javax.imageio.ImageIO; 
import javax.swing.ImageIcon; 
 
import com.sun.image.codec.jpeg.JPEGCodec; 
import com.sun.image.codec.jpeg.JPEGImageDecoder; 
import com.sun.image.codec.jpeg.JPEGImageEncoder; 
 
/** 
 * 圖片水印 
 * @blog http://sjsky.iteye.com 
 * @author Michael 
 */ 
public class ImageMarkLogoByIcon { 
 
 /** 
 * @param args 
 */ 
 public static void main(String[] args) { 
 String srcImgPath = "d:/test/michael/myblog_01.png"; 
 String iconPath = "d:/test/michael/blog_logo.png"; 
 String targerPath = "d:/test/michael/img_mark_icon.jpg"; 
 String targerPath2 = "d:/test/michael/img_mark_icon_rotate.jpg"; 
 // 給圖片添加水印 
 ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath); 
 // 給圖片添加水印,水印旋轉(zhuǎn)-45 
 ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath2, 
  -45); 
 
 } 
 
 /** 
 * 給圖片添加水印 
 * @param iconPath 水印圖片路徑 
 * @param srcImgPath 源圖片路徑 
 * @param targerPath 目標(biāo)圖片路徑 
 */ 
 public static void markImageByIcon(String iconPath, String srcImgPath, 
  String targerPath) { 
 markImageByIcon(iconPath, srcImgPath, targerPath, null); 
 } 
 
 /** 
 * 給圖片添加水印、可設(shè)置水印圖片旋轉(zhuǎn)角度 
 * @param iconPath 水印圖片路徑 
 * @param srcImgPath 源圖片路徑 
 * @param targerPath 目標(biāo)圖片路徑 
 * @param degree 水印圖片旋轉(zhuǎn)角度 
 */ 
 public static void markImageByIcon(String iconPath, String srcImgPath, 
  String targerPath, Integer degree) { 
 OutputStream os = null; 
 try { 
  Image srcImg = ImageIO.read(new File(srcImgPath)); 
 
  BufferedImage buffImg = new BufferedImage(srcImg.getWidth(null), 
   srcImg.getHeight(null), BufferedImage.TYPE_INT_RGB); 
 
  // 得到畫(huà)筆對(duì)象 
  // Graphics g= buffImg.getGraphics(); 
  Graphics2D g = buffImg.createGraphics(); 
 
  // 設(shè)置對(duì)線段的鋸齒狀邊緣處理 
  g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, 
   RenderingHints.VALUE_INTERPOLATION_BILINEAR); 
 
  g.drawImage(srcImg.getScaledInstance(srcImg.getWidth(null), srcImg 
   .getHeight(null), Image.SCALE_SMOOTH), 0, 0, null); 
 
  if (null != degree) { 
  // 設(shè)置水印旋轉(zhuǎn) 
  g.rotate(Math.toRadians(degree), 
   (double) buffImg.getWidth() / 2, (double) buffImg 
    .getHeight() / 2); 
  } 
 
  // 水印圖象的路徑 水印一般為gif或者png的,這樣可設(shè)置透明度 
  ImageIcon imgIcon = new ImageIcon(iconPath); 
 
  // 得到Image對(duì)象。 
  Image img = imgIcon.getImage(); 
 
  float alpha = 0.5f; // 透明度 
  g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 
   alpha)); 
 
  // 表示水印圖片的位置 
  g.drawImage(img, 150, 300, null); 
 
  g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); 
 
  g.dispose(); 
 
  os = new FileOutputStream(targerPath); 
 
  // 生成圖片 
  ImageIO.write(buffImg, "JPG", os); 
 
  System.out.println("圖片完成添加Icon印章。。。。。。"); 
 } catch (Exception e) { 
  e.printStackTrace(); 
 } finally { 
  try { 
  if (null != os) 
   os.close(); 
  } catch (Exception e) { 
  e.printStackTrace(); 
  } 
 } 
 } 
} 

再為大家分享一例:

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import javax.imageio.ImageIO;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
 
public final class ImageUtils {
 public ImageUtils() {
 
 }
 
 /**
 * public final static String getPressImgPath() { return ApplicationContext
 * .getRealPath("/template/data/util/shuiyin.gif"); }
 */
 
 /**
 * 把圖片印刷到圖片上
 * 
 * @param pressImg --
 *  水印文件
 * @param targetImg --
 *  目標(biāo)文件
 * @param x
 *  --x坐標(biāo)
 * @param y
 *  --y坐標(biāo)
 */
 public final static void pressImage(String pressImg, String targetImg,
  int x, int y) {
 try {
  //目標(biāo)文件
  File _file = new File(targetImg);
  Image src = ImageIO.read(_file);
  int wideth = src.getWidth(null);
  int height = src.getHeight(null);
  BufferedImage image = new BufferedImage(wideth, height,
   BufferedImage.TYPE_INT_RGB);
  Graphics g = image.createGraphics();
  g.drawImage(src, 0, 0, wideth, height, null);
 
  //水印文件
  File _filebiao = new File(pressImg);
  Image src_biao = ImageIO.read(_filebiao);
  int wideth_biao = src_biao.getWidth(null);
  int height_biao = src_biao.getHeight(null);
  g.drawImage(src_biao, (wideth - wideth_biao) / 2,
   (height - height_biao) / 2, wideth_biao, height_biao, null);
  //水印文件結(jié)束
  g.dispose();
  FileOutputStream out = new FileOutputStream(targetImg);
  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
  encoder.encode(image);
  out.close();
 } catch (Exception e) {
  e.printStackTrace();
 }
 }
 
 /**
 * 打印文字水印圖片
 * 
 * @param pressText
 *  --文字
 * @param targetImg --
 *  目標(biāo)圖片
 * @param fontName --
 *  字體名
 * @param fontStyle --
 *  字體樣式
 * @param color --
 *  字體顏色
 * @param fontSize --
 *  字體大小
 * @param x --
 *  偏移量
 * @param y
 */
 
 public static void pressText(String pressText, String targetImg,
  String fontName, int fontStyle, int color, int fontSize, int x,
  int y) {
 try {
  File _file = new File(targetImg);
  Image src = ImageIO.read(_file);
  int wideth = src.getWidth(null);
  int height = src.getHeight(null);
  BufferedImage image = new BufferedImage(wideth, height,
   BufferedImage.TYPE_INT_RGB);
  Graphics g = image.createGraphics();
  g.drawImage(src, 0, 0, wideth, height, null);
  
  g.setColor(Color.RED);
  g.setFont(new Font(fontName, fontStyle, fontSize));
 
  g.drawString(pressText, wideth - fontSize - x, height - fontSize
   / 2 - y);
  g.dispose();
  FileOutputStream out = new FileOutputStream(targetImg);
  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
  encoder.encode(image);
  out.close();
 } catch (Exception e) {
  System.out.println(e);
 }
 }
 
 public static void main(String[] args) {
 pressImage("F:/logo.png",  "F:/123.jpg", 0, 0);
 }
}

希望本文所述對(duì)大家用java語(yǔ)言實(shí)現(xiàn)圖片添加水印有所幫助。

相關(guān)文章

  • 淺談Java的兩種多線程實(shí)現(xiàn)方式

    淺談Java的兩種多線程實(shí)現(xiàn)方式

    本篇文章主要介紹了淺談Java的兩種多線程實(shí)現(xiàn)方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 淺談Springboot下引入mybatis遇到的坑點(diǎn)

    淺談Springboot下引入mybatis遇到的坑點(diǎn)

    這篇文章主要介紹了Springboot下引入mybatis遇到的坑點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 在Spring中使用Knife4j進(jìn)行API文檔生成與管理的操作方法

    在Spring中使用Knife4j進(jìn)行API文檔生成與管理的操作方法

    Knife4j 是為Java MVC 框架(如Spring Boot、Spring MVC等)集成 Swagger 生成 API 文檔的增強(qiáng)解決方案,它基于 Swagger 的核心功能,通過(guò)定制化的前端界面和一些額外的特性,本文介紹了在Spring中使用Knife4j進(jìn)行API文檔生成與管理的操作方法,需要的朋友可以參考下
    2024-12-12
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(50)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(50)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-08-08
  • springboot多文件或者文件夾壓縮成zip的方法

    springboot多文件或者文件夾壓縮成zip的方法

    最近碰到個(gè)需要下載zip壓縮包的需求,于是我在網(wǎng)上找了下別人寫(xiě)好的zip工具類,下面通過(guò)本文給大家分享springboot多文件或者文件夾壓縮成zip的方法,感興趣的朋友一起看看吧
    2024-07-07
  • 如何獲取springboot打成jar后的classpath

    如何獲取springboot打成jar后的classpath

    這篇文章主要介紹了如何獲取springboot打成jar后的classpath問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • mybatis實(shí)體類字段大小寫(xiě)及字段獲取不到值問(wèn)題

    mybatis實(shí)體類字段大小寫(xiě)及字段獲取不到值問(wèn)題

    這篇文章主要介紹了mybatis實(shí)體類字段大小寫(xiě)及字段獲取不到值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java中的OPT算法實(shí)現(xiàn)方式

    java中的OPT算法實(shí)現(xiàn)方式

    這篇文章主要介紹了java中的OPT算法實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 基于springMvc+hibernate的web application的構(gòu)建

    基于springMvc+hibernate的web application的構(gòu)建

    下面小編就為大家?guī)?lái)一篇基于springMvc+hibernate的web application的構(gòu)建。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • java通過(guò)jacob實(shí)現(xiàn)office在線預(yù)覽功能

    java通過(guò)jacob實(shí)現(xiàn)office在線預(yù)覽功能

    這篇文章主要為大家詳細(xì)介紹了java通過(guò)jacob實(shí)現(xiàn)office在線預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08

最新評(píng)論