require 'libpng' half = true if ARGV.delete '--half' p = Png.read(ARGV.shift) colmap = ARGV.shift || '01234567abcdefgh' if half tog = true p.lines.delete_if { tog = !tog } p.lines.each { |l| l.replace l.unpack('C*').find_all { tog = !tog }.pack('C*') } end puts p.lines.map { |l| l = l.unpack('C*') unless l.kind_of?(::Array) ; l.map { |i| colmap[i] ? colmap[i, 1] : ' ' }.join }