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