2015-11-16 21 views
5

は、画像をbase64文字列にサーバーにアップロードされます。Railsでmini_magickでbase64イメージファイルをデコードするには?私たちのRails 4のアプリで

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

私達はように、コンテンツの種類、サイズなどを取得して、ファイルシステム上の画像ファイルとして保存したいです。アプリにgem 'mini_magick'があります。 mini_magickでbase64イメージ文字列を処理する方法はありますか?

+0

あなたはそれを解決しましたか? – Defoncesko

答えて

11

はい、そうする方法があります。

入力文字列の"data:image/jpeg;base64,"をストリップし、Base64.decode64メソッドでデコードします。バイナリ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' 
関連する問題