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

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

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

    數(shù)據(jù)加載中……
    Java添加水印(圖片水印,文字水印)
    因?yàn)轫?xiàng)目中考慮到添加圖片版權(quán)的保護(hù),特意看了下水印的處理...以下有兩種方式:

    第一種是添加文字水印:
    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
         *            圖片質(zhì)量
         * 
    @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); // 添加水印的文字和設(shè)置水印文字出現(xiàn)的內(nèi)容
            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的,因?yàn)樗馁|(zhì)量和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 --
         *            目標(biāo)文件
         * 
    @param x
         *            --x坐標(biāo)
         * 
    @param y
         *            --y坐標(biāo)
         
    */

        
    public final static void pressImage(String pressImg, String targetImg,
                
    int x, int y) {
            
    try {
                
    //目標(biāo)文件
                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);
                
    //水印文件結(jié)束
                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 --
         *            目標(biāo)圖片
         * 
    @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開源

    不錯(cuò)~~
      回復(fù)  更多評論    

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

      回復(fù)  更多評論    

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

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

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

    值得學(xué)習(xí)
      回復(fù)  更多評論    

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

    跟.net差不多!
      回復(fù)  更多評論    

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

    thank you
      回復(fù)  更多評論    

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 成人精品视频99在线观看免费| 亚洲v高清理论电影| 免费观看的a级毛片的网站| 最近2019中文字幕免费看最新| 性感美女视频免费网站午夜| 亚洲JIZZJIZZ中国少妇中文| 亚洲欭美日韩颜射在线二| 亚洲精品国产福利片| 亚洲精品国产av成拍色拍| 中文字幕免费在线看电影大全| 国产91精品一区二区麻豆亚洲| 亚洲人成电影青青在线播放| 一级毛片a女人刺激视频免费| 最近最新高清免费中文字幕| 日韩视频免费在线观看| 日韩免费视频观看| 久久久无码精品亚洲日韩蜜臀浪潮| 亚洲AV无码一区二区三区鸳鸯影院| 免费无码av片在线观看| 国产成人无码a区在线观看视频免费| 亚洲国产精品国自产拍AV| 亚洲精品中文字幕| 免费看搞黄视频网站| 亚洲无线一二三四区手机| 成人网站免费大全日韩国产| 久久亚洲精品AB无码播放| 日韩版码免费福利视频| 中文字幕亚洲专区| 黄色网址大全免费| 波多野结衣在线免费视频| 久久夜色精品国产亚洲AV动态图 | 永久免费A∨片在线观看| 亚洲综合国产精品| 永久免费毛片手机版在线看| jizz免费观看视频| 日本久久久免费高清| 亚洲五月午夜免费在线视频| 亚洲精品**中文毛片| 国产伦精品一区二区三区免费下载| 亚洲伊人久久大香线蕉结合| 黄网站免费在线观看|