将高分辨率 .PNG 转换为用于 OLED 显示的 C 数组,没有任何问题 [已关闭]

问题描述 投票:0回答:2

我遇到了我最初认为的“插值问题”。

如下图所示,将高分辨率 PNG 徽标图像转换为 .C 数组,以便在连接到“Arduino Uno”的“Duinotech SSD1351 XC3726 128 x 128 OLED 显示器”上显示。

我正在寻求找到最佳实践来做到这一点,而不引入明显的功能障碍,并解决我的问题。

logo

.C output to display with issues

我尝试多次重复这些步骤。

我尝试了不同的基本图像调整大小SASS产品,例如Gimp和Photopea,但没有使用Photoshop,然后在https://rinkydink electronics网站的图像转换器中完成了代码转换,我已确保我拥有所需的所有正确和功能库由于内存空间不足,Arduino 和我的 Macbook Pro 未将程序文件优化到云端。

我确实在 git hub 中找到了一些代码行来执行此操作(正在处理中),它似乎给了我代码,但图像太大。可以再试一次。

c++ arrays c image arduino
2个回答
1
投票

没有有插值伪影。您有以下一项或多项:

  1. 您的宽度/步幅不正确。
  2. 您访问像素的方式不正确(例如)。 RGB 数据是三个字节/像素,您可以将其作为单个[单色]字节进行访问(反之亦然)。

您可以使用ImageMagick的

convert
程序:

# resize original JPEG to 128x128
convert orig.jpg -geometry 128x128 small.jpg

# convert image to P6 (binary) .ppm format
convert small.jpg small.ppm

# convert .ppm to P3 (ascii) format
convert small.ppm -compress none final.ppm

以上将产生

final.ppm
。顶部看起来像:

P3
128 128
255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 253 254 255 253 254 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 254 251 255 255 251 255 255 255 254 255 255 254 255 255 254 255 255 254 255 255 253 255 254 253 255 254 253 255 254 253 253 253 253 253 253 253 253 253 253 253 253 253 253 255 253 253 255 253 253 255 252 253 255 253 255 254 251 255 254 253 255 254 252 254 253 252 254 253 251 253 252 252 252 254 252 252 254 252 252 254 252 252 254 251 252 255 251 252 255 249 253 255 249 253 255 248 253 255 248 253 255 249 254 255 249 254 255 250 254 255 250 254 255 252 253 255 252 253 255 253 253 255 253 253 255 252 252 254 252 252 254 251 253 252 251 253 252 251 253 252 251 253 252 249 253 252 249 253 252 253 253 255 253 253 255 253 253 255 253 253 255 253 253 253 253 253 253 253 253 253 253 253 253 254 255 255 254 255 255 254 255 255 254 255 255 254 255 255 254 255 255 254 255 255 255 255 253 255 255 253 255 254 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 255 255 251 254 255 251 254 255 251 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255

您可以删除前三行并[轻松]将其转换为初始值设定项列表(带逗号),然后放入

.h
文件中。

记住它是 R/G/B,所以每个像素有三个数字。

unsigned char logo[128][128][3] = {
// data with commas
};

-1
投票

从图像来看,我想说你要么以错误的分辨率保存或解析图像。您可以尝试尝试一下它的渲染方式或验证双方的输入和输出设置。

© www.soinside.com 2019 - 2024. All rights reserved.