<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java進行時

    程序人生
    數據加載中……
    Java添加水印(圖片水印,文字水印)
    因為項目中考慮到添加圖片版權的保護,特意看了下水印的處理...以下有兩種方式:

    第一種是添加文字水印:
    import java.awt.*;
    import java.awt.image.*;
    import java.io.*;
    import javax.swing.*;
    import com.sun.image.codec.jpeg.*;

    public class WaterSet {
        
    /**
         * 給圖片添加水印
         * 
         * 
    @param filePath
         *            需要添加水印的圖片的路徑
         * 
    @param markContent
         *            水印的文字
         * 
    @param markContentColor
         *            水印文字的顏色
         * 
    @param qualNum
         *            圖片質量
         * 
    @return
         
    */

        
    public boolean createMark(String filePath, String markContent,
                Color markContentColor, 
    float qualNum) {
            ImageIcon imgIcon 
    = new ImageIcon(filePath);
            Image theImg 
    = imgIcon.getImage();
            
    int width = theImg.getWidth(null);
            
    int height = theImg.getHeight(null);
            BufferedImage bimage 
    = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);
            Graphics2D g 
    = bimage.createGraphics();
            g.setColor(markContentColor);
            g.setBackground(Color.white);
            g.drawImage(theImg, 
    00null);
            g.drawString(markContent, width 
    / 5, height / 5); // 添加水印的文字和設置水印文字出現的內容
            g.dispose();
            
    try {
                FileOutputStream out 
    = new FileOutputStream(filePath);
                JPEGImageEncoder encoder 
    = JPEGCodec.createJPEGEncoder(out);
                JPEGEncodeParam param 
    = encoder.getDefaultJPEGEncodeParam(bimage);
                param.setQuality(qualNum, 
    true);
                encoder.encode(bimage, param);
                out.close();
            }
     catch (Exception e) {
                
    return false;
            }

            
    return true;
        }

    }

    第二種是添加圖片水印和文字水印兩種方法,水印圖片可以是GIF,PNG透明的文件,我一般采用的是PNG的,因為它的質量和GIF相比要高一些:

    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, 
    00, 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, 
    00, wideth, height, null);
                
    // String s="www.qhd.com.cn";
                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"00);
        }

    }

    posted on 2007-11-29 13:15 davma 閱讀(12978) 評論(6)  編輯  收藏

    評論

    # re: Java添加水印(圖片水印,文字水印) 2007-11-30 14:06 專注java開源

    不錯~~
      回復  更多評論    

    # re: Java添加水印(圖片水印,文字水印) 2007-11-30 14:14 專注java開源

      回復  更多評論    

    # re: Java添加水印(圖片水印,文字水印) 2007-11-30 18:02 專注java開源

    ImageUtils這個類pressImage方法的x、y參數沒有用,建議只需要一個position參數代替x、y。
      回復  更多評論    

    # re: Java添加水印(圖片水印,文字水印) 2009-07-10 12:18 hemingwang0902

    值得學習
      回復  更多評論    

    # re: Java添加水印(圖片水印,文字水印) 2009-08-07 11:32 t

    跟.net差不多!
      回復  更多評論    

    # re: Java添加水印(圖片水印,文字水印)[未登錄] 2014-01-07 11:18 

    thank you
      回復  更多評論    

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲中文字幕成人在线| 一级成人a毛片免费播放| 久久精品女人天堂AV免费观看| 99久久亚洲综合精品成人网| 久草免费手机视频| 午夜亚洲AV日韩AV无码大全| 全免费a级毛片免费看| 香蕉视频在线观看亚洲| 成人午夜免费福利视频| 亚洲最大的黄色网| 免费无遮挡无码视频网站| 亚洲gay片在线gv网站| 亚洲国产黄在线观看| a级毛片100部免费观看| 久久亚洲AV成人无码软件| 日韩欧美一区二区三区免费观看| 亚洲国产欧洲综合997久久| 亚洲精品国产电影| a级在线免费观看| 亚洲中文字幕久在线| 日本久久久免费高清| 国产免费人成视频在线播放播| 亚洲va久久久噜噜噜久久天堂| 成人免费视频69| 猫咪免费人成在线网站| 久久精品亚洲综合专区| 性色av无码免费一区二区三区| 国产精品自拍亚洲| 亚洲av永久无码制服河南实里| 69式国产真人免费视频| 黄色片网站在线免费观看| 亚洲AV无码国产在丝袜线观看| 四虎永久在线精品免费观看视频| 免费精品国产自产拍在线观看| 亚洲精品福利视频| 四虎永久在线精品视频免费观看| 皇色在线免费视频| 亚洲另类自拍丝袜第1页| 亚洲国产电影av在线网址| 99久久免费国产香蕉麻豆| 一区二区三区免费看|