2015-11-16 33 views
5

Nei nostri Rails 4 app, l'immagine viene caricata sul server in una stringa Base64:Come decodificare il file immagine base64 con mini_magick in Rails?

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

Vorremmo per recuperare il tipo di contenuto, le dimensioni e così via e salvare il file come file immagine sul file system . C'è un gem 'mini_magick' nella nostra app. C'è un modo per elaborare la stringa immagine base64 con mini_magick?

+0

hai risolto? – Defoncesko

risposta

11

Sì, c'è un modo per farlo.

Strisciare i metadati "data:image/jpeg;base64," dalla stringa di input e quindi decodificarlo con il metodo Base64.decode64. Otterrai un blob binario. Feed quel blob a MiniMagick::Image.read. ImageMagick è abbastanza intelligente da indovinare tutti i metadati per te. Quindi elaborare l'immagine con i metodi mini_magick come al solito.

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'