【问题标题】:Base64 Encode Image and Save it later to a fileBase64 编码图像并稍后将其保存到文件中
【发布时间】:2015-07-03 14:46:59
【问题描述】:

我有一个管理员可以上传图片的应用程序。我将图像保存在文件中,并进行 base64 编码(使用 ruby​​ 的 Base64.strict_encode 方法)并保存在我的数据库中。这样当后来有人从 HDD/Server 中删除物理文件时,我仍然可以通过 base64 解码(Base64.decode 方法)生成它并保存在文件中。

但是编解码不顺利,图片损坏,保存后无法查看。

当我使用http://www.base64-image.de/ 对文件进行编码时,我根据结果检查了 Base64.strict_encode 的输出,它们是不同的。

谁能帮我解决这个问题?我究竟做错了什么?我没有做什么?

在上传期间对图像进行编码:

  imageLoc = image.image.to_s
  logger.info '>>>>>>' + (Base64.strict_encode64(open(imageLoc).read)).to_s
  image_data = Base64.strict_encode64(File.open(imageLoc, 'rb').read)
  CategoryImage.update_image_data(image.id,image_data)

图像文件丢失时解码:

File.open(File.join(APP_CONFIG['image_storage_location'], image[:image]), 'wb') { |f|
    content = image[:image_data]
    content.gsub!('\\r', "\r")
    content.gsub!('\\n', "\n")
    f.write(Base64.decode64(content))
    f.close
  }

来自网站 (base64-image.de) 的编码图像:https://shrib.com/cYLKfEe1?v=nc

来自我的代码的编码图像:https://shrib.com/CODE-encoded%20image?v=nc

编辑

当我将数据库中的编码图像数据替换为从上述网站生成的图像数据时,我的图像被重新生成并可以查看。所以真正的与编码有关。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 image-processing base64


    【解决方案1】:

    曾经遇到过类似的问题,通过用 IO.binread(imageLoc) 替换 File.read 方法解决了。希望能帮助到你。 :)

    【讨论】:

    • 我之前将代码放在错误的文件中...谢谢。你拯救了我的一天!
    猜你喜欢
    • 1970-01-01
    • 2016-09-18
    • 1970-01-01
    • 2012-10-21
    • 2012-11-16
    • 2021-10-29
    • 2020-03-01
    • 1970-01-01
    • 2011-10-19
    相关资源
    最近更新 更多