如何在代码中将图像像素数据放入数组中?
How to put image pixel data into an array in code?
我想将图标像素数据集成到我的 C++ 程序的代码中。我正在使用 SFML 库。设置图标的 window 方法如下所示:
void setIcon(unsigned int width, unsigned int height, const Uint8 *pixels)
当然,SFML 提供了读取图像文件和获取像素的方法。但是,我不想读取图像文件;相反,我希望在代码中包含图像像素数据,并将其编译成可执行文件。类似于:
sf::Uint8 pixels[] = { <image pixel data> };
我该怎么做(如果可能的话)?
您可以在 Gimp 中打开图片
将其导出 (Ctrl+E) 为 .c
或 .h
然后将文件包含在项目
中
扩展 Eljay 的评论:
运行 xxd -i icon.png
创建一个包含以下内容的文件 icon.h
:
unsigned char icon_png[] = { <image file data> };
unsigned int icon_png_len = 264;
请注意,icon_png
不包含像素数据,而是包含整个文件(因此,包括文件头)。使用 SFML,这是获取像素数据的代码:
sf::Image icon;
icon.loadFromMemory(icon_png, icon_png_len);
window.setIcon(icon.getSize().x, icon.getSize().y, icon.getPixelsPtr());
我想将图标像素数据集成到我的 C++ 程序的代码中。我正在使用 SFML 库。设置图标的 window 方法如下所示:
void setIcon(unsigned int width, unsigned int height, const Uint8 *pixels)
当然,SFML 提供了读取图像文件和获取像素的方法。但是,我不想读取图像文件;相反,我希望在代码中包含图像像素数据,并将其编译成可执行文件。类似于:
sf::Uint8 pixels[] = { <image pixel data> };
我该怎么做(如果可能的话)?
您可以在 Gimp 中打开图片
将其导出 (Ctrl+E) 为 .c
或 .h
然后将文件包含在项目
扩展 Eljay 的评论:
运行 xxd -i icon.png
创建一个包含以下内容的文件 icon.h
:
unsigned char icon_png[] = { <image file data> };
unsigned int icon_png_len = 264;
请注意,icon_png
不包含像素数据,而是包含整个文件(因此,包括文件头)。使用 SFML,这是获取像素数据的代码:
sf::Image icon;
icon.loadFromMemory(icon_png, icon_png_len);
window.setIcon(icon.getSize().x, icon.getSize().y, icon.getPixelsPtr());