<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 閱讀(702) 評論(1)  編輯  收藏

    評論

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


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲无限乱码一二三四区| 亚洲日本韩国在线| 久久精品亚洲中文字幕无码麻豆| 美女被免费视频网站a| 免费高清在线影片一区| 亚洲一卡2卡3卡4卡乱码 在线| 亚洲免费在线视频播放| 亚洲AV无码精品蜜桃| 四虎影视免费在线| 国产成人亚洲综合a∨| 亚洲美日韩Av中文字幕无码久久久妻妇 | 3344免费播放观看视频| 久久精品7亚洲午夜a| 蜜桃视频在线观看免费视频网站WWW| 国产AV无码专区亚洲精品| 国产精品网站在线观看免费传媒| 国产AV无码专区亚洲AVJULIA| 国产成人精品一区二区三区免费| 亚洲国产精品lv| AA免费观看的1000部电影| 亚洲日韩精品A∨片无码加勒比| 好男人视频在线观看免费看片| 亚洲av永久无码一区二区三区| 日批日出水久久亚洲精品tv| 久久国产精品免费一区二区三区 | 99久久人妻精品免费一区| 亚洲理论片在线观看| 青草草在线视频永久免费| 亚洲精品黄色视频在线观看免费资源 | 日本免费一区二区三区最新vr| 亚洲第一se情网站| 亚洲中文字幕第一页在线| 最近中文字幕无免费| 亚洲成av人片在线天堂无| 亚洲精品无码你懂的网站| 久久久久久AV无码免费网站下载| 国产精品亚洲四区在线观看| 亚洲高清无码在线观看| 猫咪免费人成网站在线观看| 免费观看又污又黄在线观看| 久久久亚洲欧洲日产国码二区 |