在本文中,将展示如何使用免费工具将图像放在一个微型 OLED 屏幕上。 在 Pico Pong 中使用这种方法将徽标放在 MicroPython 中的 SSD1306 上,但可以使用您选择的编码语言和屏幕。 拍摄图像,将其拖到工具上并将其生成的代码复制到项目中。 我们提供 MicroPython 和 CircuitPython 示例代码。 我们将准确解释一切是如何运作的。 我们还将向您解释 Base 64 编码。 好处 将图像编码为可以放入代码中的简单字符串非常方便。 无需加载和保存图像文件,简单快捷。 我们尝试使用二进制数组(您将在命令行工具上看到),但这会使源代码太长。 将其转换为 Base64 编码的字符串要短得多。
获取我们所有的代码和示例图像
我们捆绑了一些示例图像,以及用于显示图像的示例代码。 我们还包括将图像转换为代码的命令行工具。 单击此处下载我们所有的代码、示例图像和终端命令, 或打开终端并输入:
代码: 全选
[color=#c9d1d9]git clone https://github.com/gurgleapps/image-to-code.git[/color]
我们有一个在线工具,您可以在其中拖放、复制和粘贴。 我们还有一个用 python 编写的命令行工具,您可以在自己的机器上使用,并修改代码。
在线编码器
这是 我们在线编码器的链接 。 只需将您的图像拖入框中。 它现在应该出现在下面,并带有一个小缩略图。 单击转换,它会将您的图像转换为(Base64 编码)文本。 复制图像下方框中的文本。
命令行工具
你会发现命令行工具捆绑在 . 我们的图像编码 Github 仓库, 您可以在 PATH 环境变量中添加工具的路径,或者只打开一个 shell 并导航到包含您下载的 convert_image.py 脚本的文件夹。 现在,如果您运行终端命令:
代码: 全选
[color=#c9d1d9]./convert_image.py[/color]
代码: 全选
[color=#c9d1d9]zsh: permission denied: ./convert_image.py[/color]
代码: 全选
[color=#c9d1d9]chmod a+x convert_image.py[/color]
代码: 全选
[color=#c9d1d9]./convert_image.py path_to_image.png[/color]
在线解码器
对您刚刚生成的代码感到好奇吗? 这是 我们在线解码器的链接 。 您不需要它来将图像显示在屏幕上,但这是了解正在发生的事情的好方法。 只需简单地将 Base64 编码字符串粘贴到文本框中,然后您可以在下面将其转换为不同的数字基数,例如二进制! 很快你就会明白所有数字的来源。
如何在项目中显示图像
您会发现 MicroPython 和 CircuitPython 的示例代码捆绑在 . 我们的图像编码 Github repo 我们使用 SSD1306 和 SSD1305 屏幕,效果很好,很容易修改为其他屏幕和语言。 如果您知道我们用来编码和解码图像的简单方法,那么代码会更有意义。
它是如何工作的
将图像转换为代码 您的图像被转换为字节列表(8 位是 1 或 0)。 第一个字节是图像的宽度,下一个是高度。 然后我们从图像的左上角水平读取第一个 8 像素。 On 为 1 off 为 0,这些构成下一个字节。 接下来的 8 个像素构成下一个字节,我们继续前进,直到到达屏幕的末尾,然后移动到下一行。 我们重复此操作,直到您的图像变成字节列表。 现在我们对字节进行 Base64 编码。 我们将解释这是如何工作的,但您只需要知道字节变成字母。 将代码转换为图像 现在我们反转这个过程,将 Base64 编码的字节列表从字母转换回字节。 然后我们读取图像的宽度和高度,即第一个 2 个字节。 然后我们读取第 3 个字节以获取第 1 个 8 个像素并将它们绘制到我们的图像中,然后抓取下一个字节并重复直到我们的图像被重建。
Base64 编码 - 它是如何工作的?
这个很简单,用了很多。 当您发送电子邮件附件时,它是 Base64 编码的,原因与我们将其用于图像的原因完全相同。 您将字节列表排列成一长串位(0 和 1)。 然后,您以 6 组而不是 8 组(字节)的形式收集这些位。 6 个 0 和 1 有 64 种可能的组合,每个组合都分配了一个字母。 所以每个 6 位组都变成了一个字母。