Crypto-Danciling line.(ascii 图像

题目:

一个字符的 ASCII码有 8 位,图像中的每两个黑色色块间的路程也为 8 步。

从左上角的色块出发,向右为 0,向下为 1,连起来就是对应字符的 ASCII 码。

import numpy as np
from PIL import Image
# 判断下一步往哪走
def search(arr, x, y):
  if y + 1 < arr.shape[1] and (arr[x, y + 1, :] != 255).all():
    return x, y + 1, 0
  elif x + 1 < arr.shape[0]:
    return x + 1, y, 1
  else:
    return -1, -1, -1
if __name__ == "__main__":
  image = Image.open("Dancing Line.bmp")
  array = np.array(image)
  x = y = 0
  while True:
      asc = 0
      # 每八步拼接成一个字符的 ASCII 码
      for _ in range(8):
          x, y, v = search(array, x, y)
          if v < 0:
              exit()
          asc <<= 1
          asc |= v
      print(chr(asc), end = "")

 白给!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值