<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 閱讀(12977) 評論(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
      回復  更多評論    

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


    網站導航:
     
    主站蜘蛛池模板: 热re99久久6国产精品免费| 亚洲gay片在线gv网站| 69av免费观看| 亚洲另类激情综合偷自拍图| 亚洲免费一区二区| 色久悠悠婷婷综合在线亚洲| 一级毛片免费观看不收费| 伊人久久亚洲综合| 色www永久免费| 亚洲三级电影网址| 57PAO成人国产永久免费视频| 四虎永久免费地址在线观看| 国产成人久久精品亚洲小说| 一本久久综合亚洲鲁鲁五月天| 久久亚洲国产中v天仙www| 少妇无码一区二区三区免费| 亚洲高清无在码在线无弹窗| 我的小后妈韩剧在线看免费高清版 | 国内精品久久久久影院免费 | aⅴ免费在线观看| 亚洲综合伊人制服丝袜美腿| 免费的一级黄色片| 亚洲精品视频免费观看| 亚洲午夜精品久久久久久人妖| 免费AA片少妇人AA片直播| 亚洲jizzjizz少妇| 亚洲人精品午夜射精日韩| 亚洲高清国产拍精品熟女| 免费在线观看黄网站| 久久最新免费视频| 亚洲伊人久久大香线蕉影院| 国产乱人免费视频| 无码av免费一区二区三区| 一本色道久久综合亚洲精品蜜桃冫| 可以免费观看一级毛片黄a | 亚洲av无码成人黄网站在线观看| 免费国产作爱视频网站| 一二三四在线观看免费中文在线观看| 成人爱做日本视频免费| GOGOGO高清免费看韩国| 亚洲人成免费电影|