Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Rails中使用mini_magick解码base64图像文件?_Ruby On Rails_Imagemagick_Minimagick - Fatal编程技术网

Ruby on rails 如何在Rails中使用mini_magick解码base64图像文件?

Ruby on rails 如何在Rails中使用mini_magick解码base64图像文件?,ruby-on-rails,imagemagick,minimagick,Ruby On Rails,Imagemagick,Minimagick,在我们的Rails 4应用程序中,图像以base64字符串上传到服务器: uploaded_io = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2....." 我们希望检索内容类型、大小等,并将文件另存为文件系统上的图像文件。我们的应用程序中有一个gem“mini_magick”。是否有一种方法可以使用mini_magick处理base64图像字符串?是的,有一种方法可以做到这一点 从输入字符串中剥离元数据“data:image/j

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

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

我们希望检索内容类型、大小等,并将文件另存为文件系统上的图像文件。我们的应用程序中有一个
gem“mini_magick”
。是否有一种方法可以使用
mini_magick
处理base64图像字符串?

是的,有一种方法可以做到这一点

从输入字符串中剥离元数据
“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。这很有帮助。谢谢