0

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

我正在尝试使用从旧游戏(魔法门 VI)中提取的 pcx 图像作为纹理。(游戏在 3D 环境之上有 2D UI。这个 2D UI 由各种内部格式和 pcx 文件组成。)

问题是其中一个 pcx 被枕头错误地显示。同时被 EyeOfGnome 图像查看器正确显示。(gdk-pixbuf) 另一个 pcx 被枕头正确显示!

我说的不正确是什么意思?坏图像有一种像素颜色的“红移”。左边框有点红。它就像一个“3D 化”的图像,有点模糊,整体有点暗。

我希望它与游戏 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

4

0 回答 0