图像转换工具img2cpp的使用指南

在物联网(IoT)设备编程中,经常需要将图像文件转换成可供代码使用的像素数据。这些设备通常无法直接处理JPG或PNG等格式的图像资源。img2cpp工具可以帮助将图像文件转换成C++代码中的像素数据,以便在IoT设备或其他没有资源分支的平台上使用。

工具介绍

img2cpp工具包含两个可执行文件:img2cpp和img2cppw。img2cpp是一个命令行工具,而img2cppw是一个基于图形用户界面(GUI)的工具。两者的功能相同,但使用方式略有不同。以下是img2cpp命令行工具的使用说明,它同样适用于img2cppw:

Usage: img2cpp.exe [/name ] [/jpg|/16bpp] [/gfx14|/gfx17] [/be] [/resize [][x]] [/arduino] [/out: ] The image to convert The base name to use in the header Embed as JPG image <16bpp> Convert to 16bpp Use gfx14 or 17 bindings Use big-endian format Resize the image. If one dimension isn't specified, the aspect ratio is preserved. Create code for Arduino The output header to generate

其中, 是要转换的图像文件名, 是在代码中使用的图像名称。根据生成的代码类型,这个名称可以指向像素数据的字节数组或实际的位图。

参数说明

以下是img2cpp工具支持的参数及其说明:

  • /jpg:将数据嵌入为JPG流。此选项与/be或16bpp不兼容。
  • /16bpp:将像素数据转换为RGB565格式。否则,将使用RGB888格式。
  • /gfx14/gfx17:生成使用htcw_gfx图形库的代码,使用C++14或C++17标准。
  • /be:使用大端格式输出。在IoT中,这通常是必需的,因为大多数显示控制器期望以大端格式接收像素数据。
  • /resize:调整图像大小。格式为x,用于同时调整宽度和高度;,用于调整宽度并保持纵横比;x,用于调整高度并保持纵横比。
  • /arduino:为Arduino框架生成代码。数组将在程序闪存(PROGMEM)中创建。
  • /headerfile:指定输出的头文件。如果命令行中未指定,输出将定向到stdout。

代码示例

生成的头文件包含在项目中后,如何使用取决于生成的代码类型。以下是一些示例代码片段,假设上述的是my_image:

// 原始像素数据: const uint8_t* px0ptr = my_image; // 位图的大小 uint16_t width = my_image_size.width; uint16_t height = my_image_size.height;

请注意,这里没有包含绘图代码。需要在代码中自行渲染或以其他方式使用像素数据。

// 原始像素数据(不需要): const uint8_t* px0ptr = my_image_data; // 位图的大小(不需要) uint16_t width = my_image_size.width; uint16_t height = my_image_size.height; // 位图(使用这个) my_image_t bmp = my_image; // 使用htcw_gfx,可以像这样绘制my_image到lcd上: draw::bitmap(lcd, lcd.bounds(), my_image, my_image.bounds());
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485