根据EXIF日期信息整理照片

一般相机拍下来的照片都是JPEG格式,文件头部有一块专门用来存储EXIF信息,包括光圈、快门、焦距等,还有拍摄照片时的日期。

用ruby写一个这样的程序非常简单:

require 'exifr'
require 'ftools'

unorganized_dir = 'e:\\flickr-photo\\unorganized\\'
root_dir = 'e:\\flickr-photo\\'
Dir.chdir(unorganized_dir)
Dir.glob('*.jpg') { |filename|
	exif_info = EXIFR::JPEG.new(filename)
	date_time = exif_info.date_time
	unless date_time.nil?
		target_dir = File.join(root_dir, date_time.year.to_s, "%02d" % date_time.month)
		File.makedirs(target_dir)
		File.move(filename, target_dir)
	end
}

我在E盘的flickr-photo目录下存放组织有序的照片,第一层子目录是年,2006,2007,2008……第二层子目录是月,01,02,03……把未组织的照片放在unorganized目录里,在命令行里执行ruby organize.rb,就把这些照片各自移动到合适的月份目录下了,不存在的目录会自动创建。

当然你需要修改这个程序,把unorganized_dir和root_dir设置成你自己的目录。另外需要先执行gem install exifr命令来安装exifr这个library.

也有个别的照片(或者图片)是没有携带exif信息的,程序不会对它们进行处理,执行完后,这些照片留在原地不动。我把它们移动到一个叫”no-exif”的文件夹中。

差点忘记,首先,请把你的相机时间设置正确! 🙂

这是我的第一个ruby程序……虽然简单,但很实用,帮我把从flickr备份回来的图片分好了目录。

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.