1. 程式人生 > >Java 為圖片新增水印

Java 為圖片新增水印

 

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);// 繪製文字,實現水印
        }
    }
}