2

bmp ファイルをメモリに読み込み、ピクセルを反転し、反転した画像を新しいファイルに保存する割り当てがあります。この説明からするとかなり簡単に思えますが、私の教授がそのために必要な手順をうまく説明できたとは思いません。彼は私たちに fread と fwrite について教えてくれましたが、他にもたくさんあります。誰でもこの問題についてのプロセスを説明できますか (私は説明だけの直接的な答えを探しているわけではありません)。

問題の説明へのリンクは次のとおりです: https://engineering.purdue.edu/OOSD/F2012/Exercises/ex5.html

あらゆる種類の助けを前もって感謝します。注: 私は実際にこの問題を調査しましたが、この情報について十分な見解を持っていないため、「クリック」とは言えません。

私が今行き詰まっている部分は次のとおりだと思います。

    /* The input argument is the source file pointer. The function will first construct a BMP_Image image by allocating memory to it.
 * Then the function read the header from source image to the image's header.
 * Compute data size, width, height, and bytes_per_pixel of the image and stores them as image's attributes.
 * Finally, allocate menory for image's data according to the image size.
 * Return image;
*/
BMP_Image* CreateBMPImage(FILE* fptr)
{

  //Allocate memory for BMP_Image*;

  //Read the first 54 bytes of the source into the header

  //Compute data size, width, height, and bytes per pixel;

  //Allocate memory for image data
}

BMP_Image 構造は次のようになります。

typedef struct {
    BMP_Header header;
    int data_size;
    int width;
    int height;
    int bytes_per_pixel; // This amount should be equals to number of bits/8
    char *data;
} BMP_Image;
4

1 に答える 1

0

BMPファイル形式(http://en.wikipedia.org/wiki/BMP_file_format)、特にpixalストレージの詳細をお読みください。それらは行に格納されます。それらをバイト単位で読み取り、ビット演算子を使用します。uint8_tの場合があります:)これは割り当てであるため、自分でコードを作成する必要があります。少なくとも試してみてください。

于 2012-10-21T17:27:15.847 に答える