我有一个很大的二进制文件,里面存储了很多文件。我正在尝试从文件中复制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)
};发布于 2009-11-07 03:27:48
PCX文件格式有三个组成部分:
从Wikipedia artice
由于PCX压缩方案,找到图像数据实际长度的唯一方法是读取和处理它。这项工作变得很困难,因为这种格式允许压缩数据超出图像尺寸,通常会将其填充到下一个8或16行边界。
发布于 2009-11-07 03:21:00
在不太了解PCX文件格式的情况下,我可以对此进行最佳猜测:
bytesAfterHeader = header.BytesPerLine * header.VertRes;https://stackoverflow.com/questions/1689715
复制相似问题