我想将ppm文件另存为P6。这意味着只有字节。另外我想以并行方式保存它,所以这就是我使用mmap
来映射内存的原因。
这是我试图保存所有内容的代码的一部分:
char* map;
//...
int offset = sprintf(map,"P6\n%d %d\n%d\n",x,y,k);
int counter = offset;
for(i = 0; i < x; i++)
{
for(j = 0; j < y; j++)
{
map[counter] = outputRed[i][j];
map[counter+1] = outputGreen[i][j];
map[counter+2] = outputBlue[i][j];
counter++;
}
}
问题是我无法将红色,绿色和蓝色数组(都是int)中的值保存到地图值中。
早些时候我只是将fputc
与fopen(FILE,"wb")
一起使用,这样做很好,但现在我不能这样做。
有人能告诉我怎么做吗?
答案 0 :(得分:3)
对于每个像素,您必须将计数器增加3
:
map[counter] = outputRed[i][j];
map[counter+1] = outputGreen[i][j];
map[counter+2] = outputBlue[i][j];
counter += 3;
答案 1 :(得分:0)
您可以在复制每个像素的数据后递增计数器。这可能更容易理解。
map[counter++] = outputRed[i][j];
map[counter++] = outputGreen[i][j];
map[counter++] = outputBlue[i][j];
确保为地图分配了足够的内存。