首页 > 其他 > 详细

查找电脑里重复的照片

时间:2018-11-10 23:33:33      阅读:183      评论:0      收藏:0      [点我收藏+]

我的个人电脑里最占空间的就是电影和照片了,照片整理来整理去,存在不少重复的,就想着能不能写段代码找到那些重复的照片。

原理比较简单粗暴,就是遍历所有的照片,计算MD5,MD5一样的就是重复的~

用Java写的,顺便练习一下Java~

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;

public class Main {
    private static String PHOTO_PATH = "D:\\照片";
    private static String[] extensions = {"jpg"};
    private static HashMap<String, File> hashMap = new HashMap<>();

    public static void main(String[] args) throws IOException {
        Collection files = FileUtils.listFiles(
                new File(PHOTO_PATH), extensions, true);
        for (File file : files) {
            FileInputStream fis = new FileInputStream(file);
            String md5 = DigestUtils.md5Hex(fis);
            checkSame(md5, file);
            fis.close();
        }

        System.out.println("Job done!");
    }

    private static void checkSame(String md5, File file) {
        if (hashMap.containsKey(md5)) {
            System.out.println(String.format("%-150s",
                    hashMap.get(md5).getAbsolutePath())
                    + " -- " + file.getAbsolutePath());
        } else {
            hashMap.put(md5, file);
        }
    }
}

有些照片太大了,我会调整分辨率,让文件变小一点。调整前后的两张照片其实是一样的,但是计算MD5的方法就不适用了。

这样的问题需要通过计算两张照片的汉明距离来解决,后续补上代码~

查找电脑里重复的照片

原文:https://www.cnblogs.com/parody/p/9940886.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!