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

    評論

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


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲乱码一二三四区麻豆| 精品久久久久久亚洲| 亚洲白嫩在线观看| 人妻无码一区二区三区免费 | 日韩免费视频在线观看| 亚洲a视频在线观看| 亚洲人成电影网站免费| 亚洲欧洲国产综合AV无码久久 | 亚洲精品97久久中文字幕无码| 欧美激情综合亚洲一二区| 日韩视频在线免费观看| 国产成人综合久久精品亚洲| 深夜国产福利99亚洲视频| selaoban在线视频免费精品| 亚洲精品国产精品乱码不卡√| 久久久久成人精品免费播放动漫| 97久久精品亚洲中文字幕无码| 亚洲精品在线免费观看视频| 日本亚洲色大成网站www久久| 免费国产成人午夜电影| 国产视频精品免费视频| 成年轻人网站色免费看| 狠狠综合亚洲综合亚洲色| 亚洲国产精品人人做人人爽| 97人妻精品全国免费视频| 亚洲国产精品白丝在线观看| 日韩中文字幕在线免费观看| 一级毛片大全免费播放下载| 亚洲色图在线播放| 在线免费观看一级毛片| 99在线免费观看| 亚洲专区中文字幕| 亚洲熟伦熟女新五十路熟妇| 91青青国产在线观看免费| 国产精品亚洲A∨天堂不卡| 青青在线久青草免费观看| 人妻仑刮八A级毛片免费看| 色婷婷六月亚洲婷婷丁香| 成人人观看的免费毛片| 99久久精品毛片免费播放| 亚洲精品无AMM毛片|