1

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

不幸的是,我运气不佳。每当我尝试在原始文件上使用 MiniExiftool.new 实例化 MiniExiftool(使用 model.photo.queued_for_write[:original])时,MiniExiftool gem 在 lib/mini_exiftool.rb:90:in 'load' 处引发异常,因为文件要么打开以供阅读,要么不在那里。

我把代码放在几个地方:回形针后期处理钩子、回形针处理器和延迟工作。我似乎什么也做不了。我的后备计划是在上传和使用model.photo.to_file下载文件后约15秒运行延迟作业,运行迷你exif,存储exif数据并进行相应处理(即在必要时根据exif旋转数据旋转)。但是,该解决方案到目前为止还没有奏效,因为 MiniExiftool 与通过 model.photo.to_file 下载的文件引发了完全相同的错误。

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

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

路易斯

4

1 回答 1

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/

于 2014-07-20T00:16:38.763 回答