Prev: Help with complex array transformation
Next: Encoding/decoding a image as Base64 (fails under Ruby1.9 butworks under Ruby1.8) [SOLVED]
From: Iñaki Baz Castillo on 2 Dec 2009 19:22 Hi, the folowing code encodes and decodes a image file as Base64: - Encode "icon.png" in Base64 as "base64.txt": -------------------------------------- File.open("base64.txt","w") do |file| file.write [open("icon.png").read].pack("m") end -------------------------------------- - Decode "base64.txt" as a PNG "new_icon.png" file: -------------------------------------- File.open('new_icon.png', 'wb') do |file| file << (IO.readlines('base64.txt').to_s.unpack('m')).first end -------------------------------------- It works perfectly under Ruby1.8 (after encoding and decoding "icon.png" is exatcly the same as "new_icon.png", the same binay file). However running under Ruby1.9 the result is different since "new_icon.png" is a corrupted image file. When I try to open it with a image viewer I get this error (under Linux): libpng warning: gAMA: CRC error libpng error: PNG unsigned integer out of range. Which is the difference when using Ruby1.9? how to solve it? Thanks a lot. -- Iñaki Baz Castillo <ibc(a)aliax.net> |