我在再次将数组写入位图中时遇到麻烦,因此基本上我是从.bmp文件读取数据的,在那里我获得了像素数据,并且我想使B和R = 0,所以这是我的代码:
int row_padded = ( Picture.biWidth*3 + 3) & (~3);
unsigned char* data = new unsigned char [row_padded];
unsigned char tmp;
for(int i = 0; i < Picture.biHeight; i++)
{
fread(data, sizeof(unsigned char), row_padded, plik);
for(int j = 0; j < Picture.biWidth*3; j += 3)
{
data[j] = 0;
data[j+2] = 0;
}
}
现在,当我的B和R = 0时,我想再次将其保存到同一文件中,因此我正在使用:
for(int j = 0; j< Picture.biHeight; j++)
{
fwrite(data,1,Picture.biWidth, f);
}
但没有任何效果。
答案 0 :(得分:1)
fwrite(data,1,Picture.biWidth, f)
必须为fwrite(data,1,row_padded, f)
否?否则只写入字节的前三分之一
注意:根据定义,sizeof(unsigned char)
是1