将数组写入位图C ++

时间:2018-12-30 17:26:13

标签: c++ bitmap

我在再次将数组写入位图中时遇到麻烦,因此基本上我是从.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);
}

但没有任何效果。

1 个答案:

答案 0 :(得分:1)

fwrite(data,1,Picture.biWidth, f)必须为fwrite(data,1,row_padded, f)否?否则只写入字节的前三分之一

注意:根据定义,sizeof(unsigned char)是1