Otros consejos

Para codificar un archivo:

require 'base64'
Base64.encode64(File.open("file_path", "rb").read)

Para producir el archivo de la cadena codificada:

require 'base64'
encoded_string = Base64.encode64(File.open("file_path", "rb").read)

File.open(file_name_to_create, "wb") do |file|
    file.write(Base64.decode64(encoded_string))
end

Esto funcionará también, que es un poco más limpio

 require 'base64'

 Base64.encode64(open("file_path").to_a.join)

"¿Cómo se puede descodificar este de nuevo en un archivo?" - @ user94154

 require 'base64'

 open('output_file_name.txt', 'w') do |f| 
   f << Base64.decode64( encoded_content )
 end

Cuando encoded_content sería el valor de retorno el contenido del archivo previamente codificada.

codificar un archivo de codificación base64:

File.open("output_file","w"){|file| file.write [open("link_to_file").string].pack("m")}

base 64 Decodificar archivo codificado:

File.open('original', 'wb') {|file| file << (IO.readlines('output_file').to_s.unpack('m')).first }

Aquí está mi solución:

1: Poner este método image_tag personalizado en ApplicationHelper, e incluyen módulo de ActiveSupport

module ApplicationHelper
  include ActiveSupport
  def image_tag_base64(file_path, mime_type = 'image/jpeg', options = {})
    image_tag("data:#{mime_type};base64,#{Base64.encode64(open(file_path) { |io| io.read })}", options)
  end
end

2: A continuación, dentro de la vista que desea utilizar base64 imagen codificada utilizar el método siguiente:

<%= image_tag_base64 @model.paperclip_attribute.path(:size), @model.paperclip_attribute.content_type, {class: 'responsive-img etc etc'} %>

3: HECHO

En caso de que sea útil a los demás, así es como para guardar una captura de pantalla como base 64 usando Watir

browser = Watir::Browser.new(:chrome, {:chromeOptions => {:args => ['--headless', '--window-size=1000x1000']}})
browser.goto("http://www.yourimage.com")
browser.screenshot.base64

La belleza de esto es que no es necesario almacenar la imagen en sí

scroll top