C++ 处理 PPM 图像

C++ working with PPM images

我正在尝试编写一个读取 PPM 图像的函数,该函数应该 return 内容。

PPM 图像具有以下文本格式:

P3
numOfRows numOfColumns
maxColor
numOfRows-by-numOfColumns of RGB colors

由于文本格式混合了变量类型,有什么办法可以将这些都存储在一个数组中吗?我记得 C++ 不支持不同类型的数组。如果没有,那么我正在考虑定义一个class来存储PPM内容。

C++ does not support arrays with different types.

正确。


你可以:

  1. 按你说的定义一个class,像这样:C++ Push Multiple Types onto Vector or this: Creating a vector that holds two different data types or classes or even this: Vector that can have 3 different data types C++.
  2. 有一个通用的类似 C 的数组(或者更好的是 std::vectorvoid*

C++ 不是 Javascript。 列数/行数必须是整数。最大颜色值可能是整数或浮点数,具体取决于格式详细信息,rgb 值也可能是。

所以你先看图片尺寸。然后创建一个缓冲区来保存图像。通常 32 位 rgba 是你想要的,所以要么使用 malloc() 分配 width * height * 4 要么使用 std::vector 并调整大小。 然后循环遍历数据,读取值并将它们放入 阵列。 然后你创建一个 "Image" 对象,具有宽度和高度的整数成员,以及 32 位 rgbas 的像素缓冲区(或任何你喜欢的像素格式)。