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

    評論

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


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


    網站導航:
     
    主站蜘蛛池模板: 1区1区3区4区产品亚洲| 久久精品国产亚洲一区二区| 亚洲国产精品成人精品小说| 俄罗斯极品美女毛片免费播放| 亚洲一级毛片在线播放| 自拍偷自拍亚洲精品偷一| 啦啦啦手机完整免费高清观看| 亚洲另类激情专区小说图片| 国产亚洲漂亮白嫩美女在线| 99久久人妻精品免费一区| 国产成人精品男人免费| 久久久久久亚洲av无码蜜芽| 成人免费无码精品国产电影| 亚洲国产一区二区a毛片| 99xxoo视频在线永久免费观看| 亚洲男人天堂av| 免费观看激色视频网站bd| 精品国产日韩久久亚洲| 日本高清不卡aⅴ免费网站| 国产无遮挡色视频免费视频| 野花视频在线官网免费1| 2048亚洲精品国产| 特级无码毛片免费视频尤物 | 曰韩无码AV片免费播放不卡 | 在线毛片片免费观看| 亚洲国产综合专区电影在线| 久草免费在线观看视频| 激情小说亚洲图片| 亚洲精品成人片在线观看精品字幕 | 小草在线看片免费人成视久网| 亚洲精品视频观看| 免费无码黄动漫在线观看| 日韩一级片免费观看| 久久亚洲熟女cc98cm| 毛片免费观看网址| 亚洲卡一卡2卡三卡4卡无卡三| 91精品免费久久久久久久久| 黄色网页免费观看| 亚洲欧洲国产精品久久| 一本久久综合亚洲鲁鲁五月天| 亚洲一区AV无码少妇电影|