【问题标题】:How to decode base64 image file with mini_magick in Rails?如何在 Rails 中使用 mini_magick 解码 base64 图像文件?
【发布时间】:2015-11-16 03:45:38
【问题描述】:

在我们的 Rails 4 应用程序中,图像以 base64 字符串的形式上传到服务器:

uploaded_io = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2....."

我们想检索内容类型、大小等并将文件保存为文件系统上的图像文件。我们的应用程序中有一个gem 'mini_magick'。有没有办法用mini_magick处理base64图像字符串?

【问题讨论】:

  • 你解决了吗?

标签: ruby-on-rails imagemagick minimagick


【解决方案1】:

是的,有办法做到这一点。

从您的输入字符串中剥离元数据"data:image/jpeg;base64,",然后使用Base64.decode64 方法对其进行解码。你会得到二进制blob。将该 blob 提供给 MiniMagick::Image.read。 ImageMagick 足够聪明,可以为您猜测所有元数据。然后照常使用mini_magick 方法处理图像。

require 'base64'

uploaded_io = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2....."
metadata = "data:image/jpeg;base64,"
base64_string = uploaded_io[metadata.size..-1]
blob = Base64.decode64(base64_string)
image = MiniMagick::Image.read(blob)
image.write 'image.jpeg'

# Retrieve attributes
image.type        # "JPEG"
image.mime_type   # "image/jpeg"
image.size        # 458763
image.width       # 640
image.height      # 480
image.dimensions  # [640, 480]

# Save in other format
image.format 'png'
image.write 'image.png'

【讨论】:

  • 这拯救了我的一天。在 binmode 下将 base64 图像字符串写入 tempfile 后验证图像时 ImageMagick 返回 false。这很有帮助。谢谢
猜你喜欢
  • 2014-06-12
  • 2016-03-31
  • 1970-01-01
  • 1970-01-01
  • 2016-04-04
  • 2011-04-12
  • 1970-01-01
  • 2018-12-20
  • 2016-01-13
相关资源
最近更新 更多