分析像素的 png(1 位颜色)

Analysing a png (1bit color) for pixel

今天我想知道如何分析一张1位色深(100*30)像素的png图片

图像中的像素第一行编号为 0..99,第二行编号为 100..199,以此类推。白色像素代表 ascii 码。特定白色像素的 ascii 码等于与最后一个白色像素的偏移量。例如,位置 65 处的第一个白色像素表示 ascii 代码 65 ('A'),位置 131 处的下一个白色像素表示 ascii 代码 (131 - 65) = 66 ('B') 等等。

图像中包含的文本是我需要用摩尔斯编码的,其中 "a test" 将被编码为“.- / - . ... -”

嗯,希望你能帮帮我 ;)

以下是如何根据问题中的规范提取已编码到图像中的文本。为了提取图像数据,我正在使用 PIL(真的 Pillow)。

#! /usr/bin/env python

from PIL import Image

def extract_text(iname):
    last = 0
    chars = []
    for i, v in enumerate(bytearray(Image.open(iname).tobytes())):
        if v:
            chars.append(chr(i - last))
            last = i
    return ''.join(chars)

print extract_text('coded.png')

输出

-.- --.- --.. --. -. ..--- .---- .. .-.. - 

我会让你写摩尔斯解码的东西。 :)