2016-05-27 7 views
0

Ich bekomme Bilddateien von einer Android App an meine Rails API gesendet. Ich decodiere die Bilder mit diesem:Dekodierung von Base64-kodierten Dateien in Rails dauert zu lange

StringIO.new(Base64.decode64(image[1])) 

Das Problem ist, dass es zu viel Zeit in Anspruch nimmt; auf Heroku dauert es noch länger.

Gibt es eine andere Möglichkeit, dies schneller und effizienter zu tun?

enter image description here

+0

Wie lange dauert es? Welche Größe hat das Bild? Wie lange kann es dauern? –

+0

30s bis 1 Mint .... 1MB + –

+0

Ich überprüft dies schnell auf meiner Maschine und das ist viel schneller (Sub-Sekunde) für eine 2,5 MB-Datei. Sind Sie sicher, dass das Problem mit der Decodierung ist? Vielleicht ist es mit dem Lesen der Datei? –

Antwort

1

Sie können dies auch für Base64 dekodieren verwenden:

# this method for decode base64 code to file 
    def parse_image_data(image[1]) 
    base64_file = image[1] 
    ext, string = base64_file.split(',') 

    ext = MIME::Types[base64_file].first.preferred_extension if ext.include?("base64") 
    tempfile = Tempfile.new(["#{DateTime.now.to_i}", ".#{ext}"]) 
    tempfile.binmode 
    tempfile.write Base64.decode64(string) 
    tempfile.rewind 
    tempfile 
    end