在c++中嵌入PNG图像作为矢量或数组
embedding a PNG image in C++ as a vector or array
谁能给我指出一个方向,这样我就可以采取PNG图像,我有并读取它们,然后将PNG图像的数据存储到数组或矢量(或其他一些数据结构),所以我可以在我的代码中实际使用,而不是在PNG中读取,等等?
我知道我可以使用libPNG读取图像,但一旦读取,我有点难倒如何读取并将其转换为我可以在游戏中使用的数据结构。
所以我的想法是我可以编写一个简单的主机程序,我输入一个PNG列表,它读取它们并将数据输出到文件中,以便我将其硬编码到实际游戏中的数据结构中。
在像Jason所说的那样读取数据后,您可以使用结构体来包含每个像素的数据。
struct RGBAQUAD
{
int Red;
int Green;
int Blue;
int Alpha;
}
然后你可以创建一个像这样的二维数组,将所有的像素结构表示为一个连续的图像。但是这样做的一个缺点是必须管理内存。
RGBQUAD **arr = 0;
arr = new RGBQUAD *[y];
for(int i = 0; i < y ; i++)
arr[i] = new RGBQUAD[x];
或者您可以将一个像素打包到单个int中以节省内存空间。
加载图片;取其宽度,高度和位深度(如果需要,可能还有更多信息);读取其颜色数据,并保存您提取的信息。
数据结构的示例:
int width;
int height;
int bits;
std::vector<int> data[width*height*bits];
当你使用这个数据结构时:
/*
Before these lines, you must get image dimensions and save them to width, height, depth variables. (either read them from somewhere or simply assign e.g. width=1024 if you know the width (I assume you do, as you're going to hardcode the image)).
*/
std::vector<int> sprite(width*height*depth);
for (int i = 0; i < width*height*depth; i++)
// sprite[i] = (read pixel i from somewhere...);
相关文章:
- VTK 图像数据,访问数组中的 1 个图像
- OpenCv 在C++中从 1 D 数组制作垫子图像的最快方法
- 如何将 2d 数组转换为 svg 或 png 格式的数独图像?
- 从 numpy 数组获取指针以将图像发送到C++
- 如何使用 WIN RPC 发送终止的字符数组(用于将图像从客户端上传到服务器)
- 使用几何着色器的图层渲染似乎只输出图像数组的第一层
- 如何将图像的字节数组(取自 s3)转换为 C++ 或 C 中的图像/图像对象
- 将 JPG 编码数组从 ROS sensor_msgs/压缩图像保存到 roscpp 中的文件
- 如何将张量转换为图像数组
- 在 qml 中从字节数组加载到图像
- OpenCV:将图像转换为C++数组
- 如何将OpenCV的Mat结构的部分图像矩阵加载到我自己的3x3数组中?
- 如何将 opencv 中的图像数组传递给函数
- C 图像处理数据块进入数组 /指针
- 如何从未签名的char*数组中获取JPEG图像数组
- 从字节数组快速转换为图像,QT可以以形式显示
- C++图像处理 - 将图像文件读入 2D 数组
- C - 将多个图像放在数组指针中
- C++ 图像数组类型
- 使用命名(fifo)管道在python和c++之间传输数组(图像)