0

画像を回転させるプログラムを書いています。画像形式はビットマップであり、http://en.wikipedia.org/wiki/BMP_file_formatによると、ビットマップ画像の行サイズは 4 の倍数である必要があります。入力画像はそうではなく、新しい画像をファイルに書き込むとき、それはあるべきものではありません。もちろん、最初にデータ部分をピクセルの配列に読み取り、その後その配列を回転させます。さらに情報が必要な場合は、教えてください。

もちろん、以前の問題は解決されましたが、なぜ c++ がこの構造体のサイズを 56 バイトとカウントするのかわかりません。

構造は次のとおりです。

struct  Bitmap_Header
{
    char H_Signature[2];
    unsigned int H_Filesize;
    int H_Reserved;
    unsigned int H_DataOffset;
    unsigned int H_Size;
    int H_Width;
    int H_Height;
    short int H_Planes;
    short int H_BitCount;
    unsigned int H_Compression;
    unsigned int H_Imagesize;
    int H_XPixelsPerM;
    int H_YPixelsPerM;
    unsigned int H_ColorsUsed;
    unsigned int H_ColorsImportant;
};
4

1 に答える 1

0

画像を bmp ファイルに書き込むときは、各走査線をパディングして、そのサイズ (バイト単位) が 4 の倍数になるようにする必要があります。各行の最後に余分な 0 バイトを追加するだけです。

于 2013-03-09T17:55:36.040 に答える