【问题标题】:Rails Image String to Image FileRails 图像字符串到图像文件
【发布时间】:2011-10-27 07:42:04
【问题描述】:

我目前将图像字符串(这是通过 API 提供的方式)作为二进制文件保存在我的数据库中,但我需要(在创建后)将其更改为文件结构,可能使用 Paperclip/Carrierwave 和 S3。

将二进制文件转换为图像文件的最佳方法是什么? jpg?

【问题讨论】:

  • 您只是在谈论将 BLOB 数据保存到文件系统?您可以制作一个 ruby​​ 应用程序来访问每个数据库记录并将其移动到系统中。就这两个 Paperclip 而言,使用起来稍微困难一些,但我发现它对 Windows 机器的兼容性更好,而 Carrierwave 更容易使用,但如果你曾经使用过 Windows,它的图像处理器会让你头疼。
  • 我不会使用 Windows,但会在 Heroku 上
  • 那我不确定,两者都需要安装 ImageMagick 的后端。我猜你在 Heroku 上会很好,因为它可能是基于 *Nix 的。

标签: ruby-on-rails image amazon-s3 paperclip carrierwave


【解决方案1】:

这成功了:

sio = StringIO.new(Base64.decode64(string))

[来源:base64 photo and paperclip -Rails]

【讨论】:

  • 我猜你解码后对 sio 对象做了什么?就像如果用户 has_attachment :file,那么你说的是 User.create(:avatar => sio) 吗?
  • 我不记得我是怎么做到的,也找不到源代码,但这个链接可能会有所帮助:stackoverflow.com/questions/6718841/…
【解决方案2】:
file_arr = Model.find(:all)
file_arr.each do |file|
  File.open(file.name,'w'){|f| f.write(file.blob)}
end

这将是我对如何做到这一点的猜测。其中 Model 是您的模型 .name 是存储在数据库中的名称, .blob 是 blob 字段...您可以通过 Rails 控制台执行此操作。

这可能不是最好的答案,但它可能会给你一个开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 2018-01-09
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多