require 'libpng' p = Png.read(ARGV.shift) colmap = ARGV.shift || '012345678' if p.height == 32 or p.width == 32 # want 16x16 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.unpack('C*').join.gsub(/(\d)/) { colmap[$1.to_i].chr rescue ' ' } }