一般相机拍下来的照片都是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备份回来的图片分好了目录。
Leave a Reply