2

たくさんのファイルが保存されている大きなバイナリファイルがあります。PCXイメージのデータをファイルからコピーして、イメージエディターで開くことができる新しいファイルに書き込もうとしています。

PCXファイルのヘッダーの仕様を取得した後、大きなバイナリファイルに画像を配置したと思います。私の問題は、ヘッダーの後に読み取ることになっているバイト数がわからないことです。PCXファイルのデコードについて読みましたが、何もデコードしたくありません。エンコードされた画像データを読み取り、それを別のファイルに書き込んで、画像エディタをで開くことができるようにします。

これがヘッダーです。画像データの「ファイルの終わり」を決定するために使用できると思うので、画像の値を含めました。

struct PcxHeader
{
BYTE Identifier;        // PCX Id Number (Always 0x0A) // 10  
BYTE Version;           // Version Number    // 5  
BYTE Encoding;          // Encoding Format    // 1  
BYTE BitsPerPixel;      // Bits per Pixel    // 8  
WORD XStart;            // Left of image     // 0  
WORD YStart;            // Top of Image     // 0  
WORD XEnd;              // Right of Image    // 319  
WORD YEnd;              // Bottom of image    // 199  
WORD HorzRes;           // Horizontal Resolution   // 320  
WORD VertRes;           // Vertical Resolution   // 200  
BYTE Palette[48];       // 16-Color EGA Palette    
BYTE Reserved1;         // Reserved (Always 0)  
BYTE NumBitPlanes;      // Number of Bit Planes   // 1  
WORD BytesPerLine;      // Bytes per Scan-line   // 320  
WORD PaletteType;       // Palette Type     // 0  
WORD HorzScreenSize;    // Horizontal Screen Size   // 0  
WORD VertScreenSize;    // Vertical Screen Size   // 0  
BYTE Reserved2[54];     // Reserved (Always 0)
};
4

2 に答える 2

0

PCXファイル形式についてあまり知らなくても、私はこれを最もよく推測することができます。

 bytesAfterHeader = header.BytesPerLine * header.VertRes;
于 2009-11-06T19:20:59.577 に答える