Python3 Pillow2.3.0无法正确解码某些pcx文件

时间:2014-02-13 14:50:31

标签: python pillow pcx

大家好我需要帮助python枕头。 我目前正在使用v2.3.0和python 3.3。

我正在尝试将从旧游戏(Might and Magic VI)中提取的pcx图像用作纹理。 (游戏在3D环境中具有2D UI。这个2D UI由各种内部格式和pcx文件组成。)

问题是其中一个pcx被枕头显示不正确。同时由EyeOfGnome图像查看器正确显示。 (GDK-PIXBUF) 枕头正确显示另一个pcx!

我的错误是什么意思? 坏图像具有像素颜色的“红移”。左边框有点红。 它就像一个“3D-ified”图像,它有点模糊,整体有点暗。

我希望它能够与游戏UI的其他部分组合,我不能像那样使用它。

我用十六进制编辑器打开了pcx文件,我在pcx-header中发现的主要区别是错误的有BYTE Palette [48];场完全空了。而另一个则有一些数据。 但它不是一个问题,因为其他观众正确地显示它。

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)
};

这是测试代码的一部分。

def showpcx(fname):
    img = Image.open(fname)
    img.show()

showpcx("border1.pcx")
showpcx("border2.pcx")

此存档包含文件 https://db.tt/td291VTh

0 个答案:

没有答案