距离我上一次制作EPROM已经大约30年了 :-)
无论如何,您需要2个东西...
第一部分
首先,您的文件是PNG格式,这意味着它们具有日期、时间、调色板、伽马块和一堆zlib
压缩数据,您不能将其直接复制到屏幕缓冲区。因此,您需要将PNG转换为简单的二进制格式,其中0表示关闭,1表示开启,文件中没有其他内容。最简单的方法是使用在大多数Linux平台上安装的ImageMagick,并且在macOS和Windows上可以免费使用。假设您的一个帧被称为anim.png
,我们想要将其转换为简单格式,比如PGM
(便携式灰度图-请参见维基百科描述),我们可以在控制台上使用ImageMagick:
convert anim.png -compress none anim.pgm
前几行将是:
P2
128 64
255
255 255 255 255 255 255 255 ...
...
...
因为该图像的大小为128x64,文件中的最大亮度值为255。然后所有数据都以ASCII格式跟随(因为我使用了
-compress none
)。在其中,255表示白色,0表示黑色。
由于这对于屏幕来说太大了,所以这里是一个图片,展示了它的外观 - 希望您能看到您的黑色方框在底部中间以一堆零的形式出现:
![enter image description here](https://istack.dev59.com/NV1Eb.webp)
现在,如果您再次运行相同的命令,但删除
-compress none
,将产生相同的头部,但数据将以二进制形式跟随。
convert anim.png anim.pgm
我们也可以使用sed
删除三行标题:
convert anim.png anim.pgm | sed '1,3d' > anim.bin
现在您已经拥有了一个仅包含纯像素的二进制文件,不包含日期/时间、作者和版权、调色板和压缩数据,您可以继续下一步操作。
第二步,一旦您将数据转换为合理的二进制格式,您需要将其转换为Intel Hex格式,为此您需要使用
srec_cat
,它可在Linux日常版本和Mac上通过
homebrew获得。
然后,我没有测试过也从未使用过,我认为您会需要类似于以下内容的东西:
srec_cat anim.bin -binary -output -intel
:020000040000FA
:20000000323535203235352032353520323535203235352032353520323535203235352000
:200020003235352032353520323535203235352032353520323535203235352032353520E0
:200040003235352032353520323535203235352032353520323535203235352032353520C0
:200060003235352032353520323535203235352032353520323535203235352032353520A0
:20008000323535203235352032353520323535203235352032353520323535203235352080
...
:207E8000353520323535203235352032353520323535203235352032353520323535203202
:207EA0003535203235352032353520323535203235352032353520323535203235352032E2
:147EC000353520323535203235352032353520323535200A2A
:00000001FF
摘要
你可以缩写和简化我上面提出的建议 - 我会将它留在那里,以便未来的人们能够理解它!
convert YourImage.png gray: | srec_cat - -binary -output -intel
gray:
是一个非常简单的ImageMagick格式,相当于没有头文件的PGM文件的二进制部分。与PGM
一样,它每个像素使用一个字节,因此对于您的纯黑白需求来说效率会有些低。您可以通过查看文件大小来了解这一点- PGM文件为8192字节,因此每个像素为1字节。如果您真的非常想要每个像素1位,您可以使用PBM
格式,如下所示:
convert YourImage.png pbm: | sed '1,3d' | srec_cat - -binary -output -intel
注意:
从ImageMagick的v7版本开始,您应该将convert
替换为magick
,以避免与Windows内置的convert
命令冲突,该命令将文件系统转换为NTFS。
ImageMagick是一个相当大的软件包,您也可以使用NetPBM套件来完成同样的工作,并使用名为pngtopnm
的工具来替换convert
。