Java 為圖片新增水印
阿新 • • 發佈:2018-12-29
package com.image import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Toolkit; import java.net.URL; import javax.swing.JFrame; import javax.swing.JPanel; public class WatermarkTextFrame extends JFrame { private Image img = null; // 宣告影象物件 private WatermarkTextPanel watermarkTextPanel = null; // 宣告影象面板物件 public static void main(String args[]) { WatermarkTextFrame frame = new WatermarkTextFrame(); frame.setVisible(true); } public WatermarkTextFrame() { super(); URL imgUrl = WatermarkTextFrame.class.getResource("/img/image.jpg");// 獲取圖片資源的路徑 img = Toolkit.getDefaultToolkit().getImage(imgUrl); // 獲取影象資源 watermarkTextPanel = new WatermarkTextPanel(); // 建立影象面板物件 this.setBounds(200, 160, 316, 237); // 設定窗體大小和位置 this.add(watermarkTextPanel); // 在窗體上新增影象面板物件 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 設定窗體關閉模式 this.setTitle("水印文字特效"); // 設定窗體標題 } // 建立面板類 class WatermarkTextPanel extends JPanel { public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g;// 獲得Graphics2D物件 g2.drawImage(img, 0, 0, 300, 237, this);// 繪製圖像 g2.rotate(Math.toRadians(-30));// 旋轉繪圖上下文物件 Font font = new Font("楷體",Font.BOLD,60);// 建立字型物件 g2.setFont(font);//指定字型 g2.setColor(Color.WHITE);// 指定顏色 AlphaComposite alpha = AlphaComposite.SrcOver.derive(0.3f);// 獲得表示透明度的AlphaComposite物件 g2.setComposite(alpha);// 指定AlphaComposite物件 g2.drawString("程式設計詞典", -60, 180);// 繪製文字,實現水印 } } }