2014-01-08 4 views
6

Ich möchte Bild in eine Datei mit rmagick schreiben. Da unten ist mein CodeSchreiben von Bilddaten in Datei in Ruby mit rmagick

im = "base64encodedstring" 
image = Magick::Image.from_blob(Base64.decode64(im) 
image[0].format = "jpeg" 
name ="something_temp" 
path = "/somepath/" + name 
File.open(path, "wb") { |f| 
    f.write(image[0]) 
} 

Ich habe auch versucht f.write(image) zu verwenden. Aber was in der Datei geschrieben wird, ist #<Magick::Image:0x7eff0587f838>. Was ist der Grund dafür?

+0

Neben Marek-Antwort, die * Grund *, warum Sie die Zeichenfolge in der Datei erhalten, weil Sie 'File.write' genannt haben, die eine' String' erwartet - es wandelt das angegebene Objekt in einen String um (ich denke, dies ist über '.to_s') und kann nicht verwendet werden, um andere Objektdaten als" String "-Typen zuverlässig zu speichern. Es gibt viele Möglichkeiten, binäre Daten zu speichern - im Fall von 'RMagick' besteht eine Möglichkeit darin, die bereitgestellten' read'- und 'write'-Methoden zu verwenden. –

Antwort

3

Dies sollte funktionieren:

image[0].write(path) 
+0

Der Pfad von OP hat keinen Typ in der Erweiterung, also brauchen Sie etwas wie image [0] .write (Pfad) {self.format = "jpeg"} ' –