我正在尝试使用结构创建数组以创建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
我目前的方法有什么问题,我可以在代码中做些什么?谢谢您的协助!
答案 0 :(得分:3)
线条
image[IMAGE_HEIGHT][IMAGE_WIDTH].red = 0;
image[IMAGE_HEIGHT][IMAGE_WIDTH].green = 1;
image[IMAGE_HEIGHT][IMAGE_WIDTH].blue = 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;
}
}