根据图片的exif时间信息-重命名jpg文件

由于本人经常上poco网看一些摄影师的作品,遇到喜欢的就会保存到本地,于是乎久了积了一堆的图片,自己做一个工具代码来整理这些图片,很简单就是根据图片的exif信息来重命名图片。
首先可以简单了解下关于如何得到exif信息。参考:[url]http://yexin218.iteye.com/blog/340884[/url] 和 [url]http://www.drewnoakes.com/code/exif/[/url]
实现代码如下:

import java.io.File;

import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.MetadataException;
import com.drew.metadata.Tag;
import com.drew.metadata.exif.ExifDirectory;

public class ReNamePic {

/**
* @param args
*/
private String srcFilePath; //修改前图片所在文件夹
private String desFilePath; //修改后图片所在文件夹

public String getDesFilePath() {
return desFilePath;
}
public void setDesFilePath(String desFilePath) {
this.desFilePath = desFilePath;
}
public String getSrcFilePath() {
return srcFilePath;
}
public void setSrcFilePath(String srcFilePath) {
this.srcFilePath = srcFilePath;
}

public ReNamePic(String srcFilePath,String desFilePath) { //带参数的构造方法
super();
this.srcFilePath = srcFilePath;
this.desFilePath = desFilePath;
}

protected void run(String dir){
try {
File d = new File(this.srcFilePath);
if (!d.isDirectory()) {
System.out.println("文件路径错误");
return;
}
File[] files = d.listFiles();
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
run(files[i].getAbsolutePath());
} else {
String filename = files[i].getAbsolutePath(); //得到图片绝对路径
if(filename.endsWith("jpg")){
doReName(filename);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void doReName(String filePath){
File jf=new File(filePath);
try {
Metadata metadata = JpegMetadataReader.readMetadata(jf);
Directory exif = metadata.getDirectory(ExifDirectory.class);
if(exif.containsTag(ExifDirectory.TAG_DATETIME)){
try {
String reName=exif.getDescription(ExifDirectory.TAG_DATETIME).replace(":","_").replace(" ","_"); //去除时间中的:和空格
System.out.println(reName);
jf.renameTo(new File(desFilePath+reName+".jpg"));
} catch (MetadataException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
System.out.println("没有exif信息: "+filePath);

}
} catch (JpegProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}
public static void main(String[] args) {
// TODO Auto-generated method stub
ReNamePic rep=new ReNamePic("C:/Documents and Settings/Administrator/桌面/文件/","C:/Documents and Settings/Administrator/桌面/文件2/");
rep.run("");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值