vendredi 3 juillet 2015

Base64 Encode Image and Save it later to a file

I have an application where an admin can upload an image. I save the image in a file and also base64 encode (using Base64.strict_encode method of ruby) & save in my DB. This is so that when later someone deleted the physical file from the HDD/Server, I can still generate it back by base64 decoding it (Base64.decode method) and save in a file.

But the encoding and decoding didn't go well as the image get damaged and I'm unable to view it after save.

I checked the output of the Base64.strict_encode against the result when I used http://ift.tt/123NYKL to encode the file, they were different.

Can anyone help me with this? What am I doing wrong? What am I not doing?

ENCODING THE IMAGE DURING UPLOAD:

  imageLoc = image.image.to_s
  logger.info '>>>>>>' + (Base64.strict_encode64(open(imageLoc).read)).to_s
  image_data = Base64.strict_encode64(File.open(imageLoc, 'rb').read)
  CategoryImage.update_image_data(image.id,image_data)

DECODING WHEN IMAGE FILE IS LOST:

File.open(File.join(APP_CONFIG['image_storage_location'], image[:image]), 'wb') { |f|
    content = image[:image_data]
    content.gsub!('\\r', "\r")
    content.gsub!('\\n', "\n")
    f.write(Base64.decode64(content))
    f.close
  }

ENCODED IMAGE FROM THE SITE (base64-image.de): http://ift.tt/1IVh2mm

ENCODED IMAGE FROM MY CODE: http://ift.tt/1C6cjRx

Aucun commentaire:

Enregistrer un commentaire