`
fsk215
  • 浏览: 40687 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
由于本人经常上poco网看一些摄影师的作品,遇到喜欢的就会保存到本地,于是乎久了积了一堆的图片,自己做一个工具代码来整理这些图片,很简单就是根据图片的exif信息来重命名图片。
  首先可以简单了解下关于如何得到exif信息。参考:http://yexin218.iteye.com/blog/340884http://www.drewnoakes.com/code/exif/
实现代码如下:
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
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    根据相机JPG文件的EXIF信息批量重命名V0.3-2015-11-27.exe

    这是一款非常方便管理自己拍摄的照片的软件,它解决了照片文件名重复问题,在软件读取照片EXIF信息以后,使用者可以根据自己的需要和命名规则,基于读取的EXIF信息而批量对照片名称添加拍摄日期/时间,十分方便后期...

    批量照片重命名-按照片Exif中的拍摄时间日期

    Exif(Exchangeable image file format)是图片文件的一种标准元数据格式,它包含了拍摄照片时的各种信息,如相机型号、曝光时间、ISO感光度、拍摄日期和时间等。在批量重命名照片时,利用Exif中的拍摄日期可以确保...

    jpeg 或 jpg 照片根据照片的修改时间批量重命名C++源代码

    批量重命名照片可以根据多种标准进行,例如文件创建时间、修改时间、元数据等。在这个特定的情况下,代码是基于照片的修改时间来执行重命名操作的。 首先,我们要理解“修改时间”这个概念。在计算机系统中,每个...

    根据Exif的摄时间和设备批量重命照片

    第二种:exif信息不存在,则进行判断文件名是否包含有时间信息,例如564-201206091615.jpg ,此情况就通过正则提取,重命名为2012-06-09-16-15.jpg 第三种:如果前两种都不满足,则通过读取照片文件在电脑中的创建...

    相片文件重命名工具

    工具将读取这些信息,并根据原始拍摄时间生成新的文件名,如"20220501_143020.jpg",这种命名方式便于按照时间顺序查找和整理文件。 2. **前缀加拍摄时间**:除了单纯的时间戳,用户还可以选择在新文件名前添加...

    vb6 编程 读取Exif 中的 拍摄日期 重命名照片文件名

    Exif(Exchangeable Image File Format)是嵌入在JPEG、TIFF等图像文件中的元数据,包含了相机拍摄时的各种信息,如拍摄日期、时间、相机型号、曝光参数等。 首先,我们需要了解如何在VB6中读取Exif数据。这通常...

    文件图片大批量重命名

    在实际应用中,我们还需要考虑一些细节问题,比如保持文件的元数据(如EXIF信息),避免重名冲突,以及处理不同类型的图片文件(如.jpg、.png、.gif等)。这些都需要在编写脚本或选择工具时进行考虑。 至于压缩包...

    【超强批量文件重命名软件】Bulk Rename Utility 绿色汉化版

    4、重命名的照片EXIF元数据(即“拍摄日期”,“分辨率”等信息嵌入在所有JPG图片文件)重命名你的照片文件名从一个毫无意义的dsc1790.jpg到一个新的文件名。 5、重命名MP3文件的ID3标签(又名MP3 ID3标签重命名)。...

    相片图片一次全部重命名

    6. **保留元数据**:高质量的批量重命名工具还会考虑保留图片的元数据,如EXIF信息,这样即使文件名改变了,照片的拍摄时间、地点等信息仍然保存完好。 批量重命名的好处包括: - **有序管理**:统一的文件名让...

    rename-exif:通过 Exif 数据重命名图像文件的命令行工具

    重命名exif 用于将图像文件重命名为每个 Exif 时间的命令行工具。如何跑步需要 Ruby 和 。 gem install exifr 在包含图像文件的目录中运行该工具。 cd /path/to/images/path/to/rename-exif.rb 工具生成脚本重命名...

    pics-tagger:使用EXIF标签重命名图片文件

    下面是一个简单的Java代码片段,展示如何使用Apache Commons Imaging库读取EXIF信息并根据日期重命名图片文件: ```java import org.apache.commons.imaging.*; ... File imageFile = new File("path/to/image....

    文件批量重命名软件

    3. **元数据应用**:对于图片文件,可以利用其内部的EXIF元数据(如拍摄日期、相机型号等)作为重命名的基础。 4. **数字序列**:可以按顺序为文件编号,如“001.jpg”、“002.jpg”等,适用于整理序列化的文件。 ...

    文件批量重命名工具

    - **元数据集成**:利用图片的EXIF信息或音乐文件的ID3标签来生成文件名。 批量重命名工具广泛应用于各种场景,包括但不限于照片整理、项目文件管理、文档归档等。它们简化了大量文件的管理流程,使得日常IT工作...

    Bulk Rename Utility(批量改名) v4.0.0 一款功能强大的批量文件重命名工具.rar

    4、重命名的照片EXIF元数据(即“拍摄日期”,“分辨率”等信息嵌入在所有JPG图片文件)重命名你的照片文件名从一个毫无意义的dsc1790.jpg到一个新的文件名。 5、重命名MP3文件的ID3标签(又名MP3 ID3标签重命名)。 6...

    图片批量缩小JPG-C_v3.1

    - **保留元数据**:在缩小图片的同时,尽可能保留图像的EXIF信息,如拍摄日期、相机型号等。 - **自动化脚本支持**:对于经常需要处理大量图片的工作流程,可能支持通过脚本自动化执行,提高效率。 在使用【图片...

    PhotoRename:根据EXIF日期,型号和校验和批量重命名照片

    通过定义重命名给定目录(包括子目录)中的所有照片(.jpg,.raw):YYYYMMDD_HHMMSS_camera model_CRC32该信息摘自exif。 笔记: 如果没有exif信息,则不会采取任何措施 使用Python 3 依赖 文件哈希 扩展

    批量照片重命名V1.2.0.0|按照片Exif中的拍摄时间日期

    例如照片“12345.jpg”,重命名后是“2007-11-17 18-41-44.jpg”。 如果按预设格式会产生同名文件,则程序自动添加#???后缀,例如“西安 2007-11-17 #008.jpg”。 文件名格式可以自定义。 1.2.0.0 需要.NET 2.0...

    C# 实现照片按拍照日期排序,读取文本文件内容自定义重命名

    在C#编程中,对照片进行按拍照日期排序并读取文本文件内容来自定义重命名是一项常见的任务,尤其在管理大量个人或专业照片时。这个过程涉及到文件系统操作、日期时间处理以及文本文件的读取。以下是实现这一功能所需...

Global site tag (gtag.js) - Google Analytics