我正在尝试编写一个读取PPM图像的函数,该函数应该返回内容。
PPM图像具有以下文本格式:
P3
numOfRows numOfColumns
maxColor
numOfRows-by-numOfColumns of RGB colors
由于文本格式混合了变量类型,有没有办法将这些存储在一个数组中?我记得C ++不支持不同类型的数组。如果没有,那么我正在考虑定义一个类来存储PPM内容。
答案 0 :(得分:1)
C ++不支持具有不同类型的数组。
正确。
你可以:
std::vector
的通用C类数组(或更好,void*
)。答案 1 :(得分:0)
C ++不是Javascript。 列数/行数必须是整数。最大颜色值可以是整数或浮点数,具体取决于格式详细信息,rgb值也可以。
所以你首先阅读图像尺寸。然后创建一个缓冲区来保存图像。通常32位rgba是你想要的,所以要么使用malloc()分配width * height * 4,要么使用std :: vector并调整大小。 然后循环遍历数据,读取值并将它们放入 数组。 然后创建一个“Image”对象,其中包含宽度和高度的整数成员,以及32位rgbas的像素缓冲区(或者您喜欢的任何像素格式)。