萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> java.imageIo給圖片添加水印的實現代碼

java.imageIo給圖片添加水印的實現代碼

最近項目在做一個商城項目, 項目上的圖片要添加水印①,添加圖片水印;②:添加文字水印;一下提供下個方法,希望大家可以用得著   復制代碼 代碼如下:
package com.blogs.image;
import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
/**
 * 圖片水印
 */
public class ImageUtil {
    /**
     * @param args
     */
    public static void main(String[] args) {
        String srcImgPath = "e:/2.png";
        String iconPath = "e:logo.jpg";
        String targerPath = "e:/3.jpg";
        // 給圖片添加水印
        ImageUtil.waterMarkImageByIcon(iconPath, srcImgPath, targerPath, 0, 0,
, 0.1f);
        // 給圖片添加水印,水印旋轉-45
        // ImageMarkLogoByIcon.markImageByIcon(iconPath, srcImgPath,
        // targerPath2, -45);
    }
    /**
     * 給圖片添加水印、可設置水印圖片旋轉角度
     *
     * @param iconPath
     *            水印圖片路徑
     * @param srcImgPath
     *            源圖片路徑
     * @param targerPath
     *            目標圖片路徑
     * @param degree
     *            水印圖片旋轉角度
     * @param width
     *            寬度(與左相比)
     * @param height
     *            高度(與頂相比)
     * @param clarity
     *            透明度(小於1的數)越接近0越透明
     */
    public static void waterMarkImageByIcon(String iconPath, String srcImgPath,
            String targerPath, Integer degree, Integer width, Integer height,
            float clarity) {
        OutputStream os = null;
        try {
            Image srcImg = ImageIO.read(new File(srcImgPath));
            System.out.println("width:" + srcImg.getWidth(null));
            System.out.println("height:" + srcImg.getHeight(null));
            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 = clarity; // 透明度
            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
                    alpha));
            // 表示水印圖片的位置
            g.drawImage(img, width, height, null);
            g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
            g.dispose();
            os = new FileOutputStream(targerPath);
            // 生成圖片
            ImageIO.write(buffImg, "JPG", os);
            System.out.println("添加水印圖片完成!"
copyright © 萬盛學電腦網 all rights reserved