【问题标题】:Using Paperclip and MiniExiftool to scrape exif data for photos and videos使用 Paperclip 和 MiniExiftool 抓取照片和视频的 exif 数据
【发布时间】:2014-07-20 08:16:38
【问题描述】:

我正在使用带有 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 秒运行延迟作业,运行 mini exif,存储 exif 数据并进行相应处理(即在必要时根据 exif 旋转数据进行旋转)。然而,该解决方案到目前为止还没有奏效,因为 MiniExiftool 会引发与通过 model.photo.to_file 下载的文件完全相同的错误。

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

感谢任何帮助!谢谢。

路易

【问题讨论】:

  • 所以我明白了为什么在 model.photo.to_file 之后我无法使用 MiniExiftool。我在 Windows 上(我知道,我知道),我的 Nginx 临时位置是我的简短用户配置文件目录,MiniExiftool 不喜欢它。因此,一旦我将其更改为 c:\temp,Paperclip 的 to_file 方法下载了我的 S3 文件,一切都开始正常工作!

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


【解决方案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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2012-05-24
    相关资源
    最近更新 更多