24 ビットの圧縮されていないビットマップを R、G、B 符号なし文字の 2D 配列にロードし、再度保存しました。バイナリ モードでファイル ストリームを使用して、自動フォーマットが発生しないようにし、ヘッダーはインポートされたのと同じようにエクスポートされます。全体...幅が4の倍数の画像を使用しているため、パディングは必要ありません。
注 : バイナリ モードで FILE と fstream の両方を試したところ、すべてその出力が得られました。もう 1 つのことは、出力を 16 進エディターで確認したところ、何らかの破損のように見える "CD" の値が非常に繰り返されていることがわかりました。
更新:ソースコード:
#include <fstream>
#include <iostream>
#pragma pack(2)
using namespace std;
struct RGB
{
unsigned char R,G,B;
};
int main()
{
ifstream f("Picture.bmp",ios::in|ios::binary);
unsigned char Header[54];
f.read(reinterpret_cast <char*> (Header),54);
int W=*(int*) (&Header[18]);
int H=*(int*) (&Header[22]);
RGB**Pic=new RGB*[H];
for (int i=0;i < H;i++)
{
Pic[i]=new RGB[W];
for (int i2=0;i2<W;i2++)
{
f>>Pic[i][i2].R;
f>>Pic[i][i2].B;
f>>Pic[i][i2].G;
}
}
ofstream save("Output.bmp",ios::out|ios::binary);
save.write(reinterpret_cast<char*>(&Header),54);
for (int i=0;i < H;i++)
{
for (int i2=0;i2<W;i2++)
{
save<<Pic[i][i2].R;
save<<Pic[i][i2].B;
save<<Pic[i][i2].G;
}
}
return 0;
}
前もって感謝します。