2015-11-16 12 views
5

In unserer Rails 4 App wird das Bild auf Server in einem Base64-String hochgeladen:Wie dekodiert man Base64-Image-Datei mit mini_magick in Rails?

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

wir möchten den Inhaltstyp, Größe und so weiter und speichern Sie die Datei als Bilddatei auf Dateisystem abzurufen . In unserer App gibt es eine gem 'mini_magick'. Gibt es eine Möglichkeit, die Base64-Bildzeichenfolge mit mini_magick zu verarbeiten?

+0

haben Sie das gelöst? – Defoncesko

Antwort

11

Ja, es gibt einen Weg, dies zu tun.

Entpacken Sie die Metadaten "data:image/jpeg;base64," aus Ihrer Eingabezeichenfolge und dekodieren Sie sie dann mit der Methode Base64.decode64. Sie erhalten ein binäres Blob. Füttern Sie diesen Blob zu MiniMagick::Image.read. ImageMagick ist intelligent genug, um alle Metadaten für Sie zu erraten. Dann bearbeiten Sie das Bild wie gewohnt mit mini_magick Methoden.

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' 
Verwandte Themen