Bootstrap

照片整理中使用ImageMetadataReader解析照片日期对文件进行重命名

最近在整理存放在电脑中的生活照片,很多照片的文件名中没有时间,很难看出是什么时候拍的,其实照片是可以查到拍摄时间的,如下图:

于是想手动修改文件名加上时间信息,苦于文件太多,费时费力,于是写了一个JAVA小程序,先使用ImageMetadataReader解析出照片信息中的时间信息,然后通过File的renameTo方法将文件重命名为带时间戳的文件名,几秒钟整理完了电脑中几万张照片,大大提升了工作效率,具体代码如下:

    public static void main(String[] args) throws IOException, ImageProcessingException {

        File f = new File("F:\\photo\\hwp10plus\\20201203\\sel");

        File[] fs = f.listFiles();

        for (int i = 0; i < fs.length; i++) {

            String fileName = fs[i].getName();

            Date dt = null;

            dt = null;

            Metadata metadata = ImageMetadataReader.readMetadata(fs[i]);

            ExifSubIFDDirectory directory = metadata.getFirstDirectoryOfType(ExifSubIFDDirectory.class);

            if (directory != null) {

                dt = directory.getDate(ExifSubIFDDirectory.TAG_DATETIME_ORIGINAL);

            }

            if (dt == null) {

            System.out.println(fileName + " no date ========");

            continue;

            }

            dt = new Date(dt.getTime() - (1000*60*60*8));

            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

            String yyyymmdd = sdf.format(dt);

            fileName = yyyymmdd + "-" + fileName;          

            fs[i].renameTo(new File("F:\\photo\\hwp10plus\\20201203\\sel\\" + fileName));

        }

    }

下载链接:点击下载代码

;