使用Paperclip和MiniExiftool来刮取照片和视频的exif数据

时间:2012-05-21 17:47:07

标签: ruby-on-rails ruby-on-rails-3

我正在使用Rails 3.0.7,Ruby 1.9.2和带有MiniExiftool gem的Paperclip 2.7来抓取上传的照片和视频中的数据,然后将这些数据作为序列化的json存储在数据库中;最终我可以根据需要使用IM / FFMPEG旋转照片/视频。

不幸的是我运气不好。每当我尝试在原始文件上使用MiniExiftool.new实例化MiniExiftool时(使用model.photo.queued_for_write [:original]),MiniExiftool gem会在lib / mini_exiftool.rb中抛出异常:90:在`load'因为文件是开放阅读还是不在那里。

我把代码放在几个地方:回形针后处理挂钩,回形针处理器和延迟工作。我似乎无法得到任何工作。我的后备计划是在上传后运行延迟作业〜15秒后使用model.photo.to_file下载文件,运行mini exif,存储exif数据并相应处理(即必要时根据exif旋转数据进行旋转)。但是,到目前为止,该解决方案还没有奏效,因为MiniExiftool会对通过model.photo.to_file下载的文件抛出完全相同的错误。

有没有其他人试图做这件事或类似的东西?在尝试处理照片/视频上传时,这似乎是一种常见的需求。

任何帮助表示赞赏!感谢。

路易斯

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

class Picture < ActiveRecord::Base
  after_post_process :save_exif_data

  def save_exif_data
    exif_data = MiniExiftool.new(image.queued_for_write[:original].path)
    self.serialized_json = exif_data.attributes
  end
end

您可以在此处查看其实现:http://listenin.gs/2014/07/18/using-miniexiftool-with-paperclip/