一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java圖片添加水印實例代碼分享

java圖片添加水印實例代碼分享

2020-03-19 12:59dy_smile JAVA教程

這篇文章主要介紹了java圖片添加水印實例代碼,感興趣的小伙伴們可以參考一下

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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);
  // 給圖片添加水印,水印旋轉-45
  ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath, targerPath2,
    -45);
 
 }
 
 /**
  * 給圖片添加水印
  * @param iconPath 水印圖片路徑
  * @param srcImgPath 源圖片路徑
  * @param targerPath 目標圖片路徑
  */
 public static void markImageByIcon(String iconPath, String srcImgPath,
   String targerPath) {
  markImageByIcon(iconPath, srcImgPath, targerPath, null);
 }
 
 /**
  * 給圖片添加水印、可設置水印圖片旋轉角度
  * @param iconPath 水印圖片路徑
  * @param srcImgPath 源圖片路徑
  * @param targerPath 目標圖片路徑
  * @param degree 水印圖片旋轉角度
  */
 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);
 
   // 得到畫筆對象
   // Graphics g= buffImg.getGraphics();
   Graphics2D g = buffImg.createGraphics();
 
   // 設置對線段的鋸齒狀邊緣處理
   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) {
    // 設置水印旋轉
    g.rotate(Math.toRadians(degree),
      (double) buffImg.getWidth() / 2, (double) buffImg
        .getHeight() / 2);
   }
 
   // 水印圖象的路徑 水印一般為gif或者png的,這樣可設置透明度
   ImageIcon imgIcon = new ImageIcon(iconPath);
 
   // 得到Image對象。
   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();
   }
  }
 }
}

再為大家分享一例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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 --
  *   目標文件
  * @param x
  *   --x坐標
  * @param y
  *   --y坐標
  */
 public final static void pressImage(String pressImg, String targetImg,
   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);
 
   //水印文件
   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);
   //水印文件結束
   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 --
  *   目標圖片
  * @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);
 }
}

希望本文所述對大家用java語言實現圖片添加水印有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久热国产在线视频 | 韩剧在线免费观看 | 亚洲高清中文字幕 | 日本三级做a全过程在线观看 | 国产馆在线观看免费的 | 免费高清www动漫视频播放器 | 国产精亚洲视频 | 久久这里有精品 | 999精品视频这里只有精品 | 肉色欧美久久久久久久蜜桃 | 国产66| 欧美大美bbb和大白屁股 | 猫咪色网| 无限好资源第一片免费韩国 | 亚洲国产精品综合欧美 | 亚洲天堂.com| 肉色欧美久久久久久久蜜桃 | 亚洲成人看片 | 亚洲男人天堂久久 | 午夜勾魂曲 | 日韩免费一级毛片 | chinesemature老女人| 暖暖 免费 高清 日本 中文 | 丰满大乳欲妇三级k8 | 激情视频激情小说 | 免费看1级伦理 | 公交车高h | 99精品国产自在现线观看 | 欧美日韩久久中文字幕 | 亚洲国产在 | 亚洲男人精品 | 91入口免费网站大全 | av在线亚洲男人的天堂 | 紧致肉肉高h | 男人插曲女人下面 | 日韩一级生活片 | 亚洲免费小视频 | 星星动漫在线观看免费 | 艹艹逼| 国产啪精品视频网给免丝袜 | 久久不卡免费视频 |