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

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

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

    lexy

    支持開源,尊重他人的勞動!

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      17 隨筆 :: 0 文章 :: 9 評論 :: 0 Trackbacks

    貼一段 最近寫的用來 給 給定目錄下的圖片 添加水印的代碼。

    WaterMark.java:


    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    import com.sun.image.codec.jpeg.JPEGCodec;

    import javax.imageio.ImageIO;
    import java.io.File;
    import java.io.IOException;
    import java.io.FilenameFilter;
    import java.io.FileOutputStream;
    import java.util.Properties;
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.util.List;
    import java.util.Arrays;
    import java.util.ArrayList;

    public class WaterMark {

    ??? private List<File> filterFiles(String path, FilenameFilter filter, List<File> fileList) {
    ??????? if (new File(path).exists() && new File(path).isDirectory()) {
    ??????????? File[] files = new File(path).listFiles(filter);
    ??????????? fileList.addAll(Arrays.asList(files));

    ??????????? File[] allFiles = new File(path).listFiles();
    ??????????? for (File file : allFiles) {
    ??????????????? if (file.isDirectory())
    ??????????????????? filterFiles(file.getPath(), filter, fileList);
    ??????????? }
    ??????? }
    ??????? return fileList;
    ??? }

    ??? private void drawWaterMark(File srcPicture, File logoPicture, String destPath, float logoPercent) {
    ??????? try {
    ??????????? Image src = ImageIO.read(srcPicture);
    ??????????? int width = src.getWidth(null);
    ??????????? int height = src.getHeight(null);
    ??????????? BufferedImage image = new BufferedImage(width, height,
    ??????????????????? BufferedImage.TYPE_INT_RGB);
    ??????????? Graphics g = image.createGraphics();
    ??????????? g.drawImage(src, 0, 0, width, height, null);

    ??????????? Image src_logo = ImageIO.read(logoPicture);

    ??????????? int width_src_logo = src_logo.getWidth(null);
    ??????????? int heigth_src_logo = src_logo.getHeight(null);

    ??????????? int width_logo = (int) (width * logoPercent);
    ??????????? int height_logo = heigth_src_logo * width_logo / width_src_logo;

    ??????????? g.drawImage(src_logo, (width - width_logo) / 2, (height - height_logo) / 2,
    ??????????????????? width_logo, height_logo, null);
    ??????????? g.dispose();
    ??????????? FileOutputStream out = new FileOutputStream(destPath + "\\" + srcPicture.getName());
    ??????????? JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
    ??????????? encoder.encode(image);
    ??????????? out.close();
    ??????? } catch (IOException e) {
    ??????????? e.printStackTrace();
    ??????? }
    ??? }

    ??? public void draw() {
    ??????? try {
    ??????????? Properties props = new Properties();
    ??????????? props.load(WaterMark.class.getClassLoader().getResourceAsStream("system.properties"));
    ??????????? FFilter filter = new FFilter(props.getProperty("extensions.pictures"));
    ??????????? List<File> files = new ArrayList<File>();
    ??????????? String srcPath = props.getProperty("path.pictures.src");
    ??????????? files = filterFiles(srcPath, filter, files);
    ??????????? File logoPic = new File(props.getProperty("path.picture.logo"));
    ??????????? String destPath = props.getProperty("path.pictures.dest");
    ??????????? float logoSize = Float.valueOf(props.getProperty("percent.picture.logo"));
    ??????????? for (File pic : files) {
    ??????????????? String path = pic.getPath().substring(srcPath.length());
    ??????????????? path = path.substring(0, path.indexOf(pic.getName()));
    ??????????????? String newPath = destPath + path;
    ??????????????? if (!new File(newPath).exists())
    ??????????????????? new File(newPath).mkdirs();
    ??????????????? drawWaterMark(pic, logoPic, newPath, logoSize);
    ??????????? }
    ??????? } catch (Exception e) {
    ??????????? e.printStackTrace();
    ??????? }
    ??? }

    ??? public static void main(String[] args) {
    ??????? new WaterMark().draw();
    ??? }
    }

    FFilter.java :

    import java.io.FilenameFilter;
    import java.io.File;
    import java.util.regex.Pattern;
    import java.util.regex.Matcher;

    public class FFilter implements FilenameFilter {
    ??? private String regEx = "";

    ??? public FFilter(String regEx) {
    ??????? this.regEx = regEx;
    ??? }

    ??? public boolean accept(File dir, String filename) {
    ??????? Pattern p = Pattern.compile(regEx);
    ??????? Matcher m = p.matcher(filename);
    ??????? return m.find();
    ??? }
    }

    system.properties:

    #source pictures directory
    path.pictures.src=C:\\Documents and Settings\\Lexy\\Desktop\\testPic
    #destination pictures directory
    path.pictures.dest=C:\\Documents and Settings\\Lexy\\Desktop\\destTestPicDest
    #picture's extensions,space by "|"
    extensions.pictures=.jpg
    #path of the watermark logo
    path.picture.logo=C:\\Documents and Settings\\Lexy\\Desktop\\logo.png
    #the watermark percent of the pictures
    percent.picture.logo=0.5

    posted on 2008-04-01 17:28 lexy 閱讀(713) 評論(1)  編輯  收藏

    評論

    # re: 給圖片添加水印的JAVA實現 2008-04-12 10:49 豆抓搜索
    找了好長時間了,哈謝啦.http://www.douzhua.com  回復  更多評論
      


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲一区二区三区不卡在线播放| 亚洲人成影院在线无码按摩店| 18成禁人视频免费网站| 亚洲高清中文字幕免费| 亚洲毛片av日韩av无码| 亚洲乱亚洲乱妇24p| 成人午夜大片免费7777| 亚洲精品人成无码中文毛片 | 亚洲最大无码中文字幕| xxxxx做受大片视频免费| 国产网站免费观看| 亚洲AV永久青草无码精品| 亚洲日韩精品国产一区二区三区| 无码乱肉视频免费大全合集| 亚洲欧洲国产成人精品| 中文字幕手机在线免费看电影| 亚洲午夜精品一级在线播放放| 亚洲欧洲国产综合AV无码久久| 色吊丝最新永久免费观看网站 | 在线观看亚洲精品国产| 中文字幕永久免费| 亚洲综合一区二区精品导航| 91高清免费国产自产| 99久久国产亚洲综合精品| 凹凸精品视频分类国产品免费| 一级特黄录像视频免费| 亚洲VA中文字幕无码一二三区 | 久久毛片免费看一区二区三区| 成年女人色毛片免费看| 人妻无码中文字幕免费视频蜜桃 | 亚洲男人的天堂在线播放| 四虎免费影院ww4164h| 亚洲人成网站18禁止| 亚洲国产精品日韩| 久久亚洲免费视频| 国产啪亚洲国产精品无码| 三年片在线观看免费西瓜视频| 亚洲精品人成电影网| 日韩视频在线精品视频免费观看| 亚洲欧洲免费无码| 亚洲AV无码久久寂寞少妇|