gpt4 book ai didi

c++ - 为 ppm 文件打印数组时出现问题

转载 作者:搜寻专家 更新时间:2023-10-31 01:26:58 25 4
gpt4 key购买 nike

我正在尝试使用结构创建数组以创建 ppm 文件。然后我想调用其他函数来更改每个单元格的颜色值 (rgb) 以制作形状。

这就是我尝试打印出一个包含三个 rgb 值的数组。

bool writeImage(const Color image[][IMAGE_WIDTH], int height) {

ofstream imgGen;

imgGen.open("imgGen.txt");

imgGen << "P3 \n";
imgGen << IMAGE_WIDTH << " " << height << "\n";
imgGen << COLOR_SCALE << "\n";

for (int imageRow = 0; imageRow < height; imageRow++) {
for (int imageColumn = 0; imageColumn < IMAGE_WIDTH; imageColumn++)
imgGen << image[imageRow][imageColumn].red << " " << image[imageRow]
[imageColumn].green << " " << image[imageRow][imageColumn].blue;
imgGen << endl;
}

imgGen.close();

return 0;
}

这是我尝试用于数组的结构。

struct Color
{
unsigned char red;
unsigned char green;
unsigned char blue;
};

int main()
{
Color image[IMAGE_HEIGHT][IMAGE_WIDTH];
image[IMAGE_HEIGHT][IMAGE_WIDTH].red = 0;
image[IMAGE_HEIGHT][IMAGE_WIDTH].green = 1;
image[IMAGE_HEIGHT][IMAGE_WIDTH].blue = 2;

writeImage(image, IMAGE_HEIGHT);

return 0;
}

我将它作为文本文件打印出来以检查格式,并试图让它打印出每个像素的三个值,类似于此:

P3
200 300
255

255 0 0 0 0 255
0 255 0 0 0 0

我当前的方法有什么问题,我可以在我的代码中做些什么不同的事情?感谢您的帮助!

最佳答案

线条

image[IMAGE_HEIGHT][IMAGE_WIDTH].red = 0;
image[IMAGE_HEIGHT][IMAGE_WIDTH].green = 1;
image[IMAGE_HEIGHT][IMAGE_WIDTH].blue = 2;

两个帐户都错了。

  1. 他们使用越界索引访问数组,因此导致未定义的行为。
  2. 他们让数组的内容仍然处于未初始化状态。

您需要一个一个地设置数组元素的值,就像您访问它们以打印它们一样。

for (int imageRow = 0; imageRow < IMAGE_HEIGHT; imageRow++)
{
for (int imageColumn = 0; imageColumn < IMAGE_WIDTH; imageColumn++)
{
image[imageRow][imageColumn].red = 0;
image[imageRow][imageColumn].green = 1;
image[imageRow][imageColumn].blue = 2;
}
}

关于c++ - 为 ppm 文件打印数组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54340472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com