Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'chunky_png'
- image = ChunkyPNG::Image.from_file('YANU.png')
- red = image.to_rgb_stream.unpack('axx'*(image.to_rgb_stream.length/3)).join
- green = image.to_rgb_stream.unpack('xax'*(image.to_rgb_stream.length/3)).join
- blue = image.to_rgb_stream.unpack('xxa'*(image.to_rgb_stream.length/3)).join
- alphaBits = []
- redBits = []
- blueBits = []
- greenBits = []
- #Extracting the LSB from each byte in each channel.
- image.to_alpha_channel_stream.split("").each { |byte| alphaBits << byte.to_s.unpack('b*')[0][0] }
- red.split("").each { |byte| redBits << byte.to_s.unpack('b*')[0][0] }
- green.split("").each { |byte| greenBits << byte.to_s.unpack('b*')[0][0]}
- blue.split("").each { |byte| blueBits << byte.to_s.unpack('b*')[0][0] }
- #Zip the bits together to produce an interleaved bit pattern.
- done = ""
- interleaved = alphaBits.zip(redBits).zip(greenBits).zip(blueBits).flatten
- #Reassemble into bytes.
- (0..13).each {|n| bits = interleaved.shift(8); done << bits.join.to_i(2).chr; }
- puts "Decoded: #{done}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement