Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3 Pillow2.3.0无法正确解码某些pcx文件_Python_Pillow_Pcx - Fatal编程技术网

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

Python3 Pillow2.3.0无法正确解码某些pcx文件,python,pillow,pcx,Python,Pillow,Pcx,大家好,我需要python枕头的帮助。 我目前正在使用v2.3.0和python 3.3 我试图使用从旧游戏May和Magic VI中提取的pcx图像作为纹理。 游戏在3D环境中有2D用户界面。此2D UI由各种内部格式和pcx文件组成 问题是其中一个pcx被枕头不正确地显示。当被EyeOfNome图像查看器正确显示时。gdk pixbuf 枕头正确显示另一个pcx 我说的错误是什么意思? 坏图像有一种像素颜色的红移。左边框有点红。 它就像一个3D图像,有点模糊,整个图像有点暗 我希望它与游戏U

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

我试图使用从旧游戏May和Magic VI中提取的pcx图像作为纹理。 游戏在3D环境中有2D用户界面。此2D UI由各种内部格式和pcx文件组成

问题是其中一个pcx被枕头不正确地显示。当被EyeOfNome图像查看器正确显示时。gdk pixbuf 枕头正确显示另一个pcx

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

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

我用十六进制编辑器打开了pcx文件,我在pcx头中发现的主要区别是错误的文件有字节调色板[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")
此存档包含这些文件

pcx的gdk pixbuf解码比枕头解码复杂得多。这不是太多的代码。所以写一个枕头补丁来让它工作应该不会太难。解码器的来源是:gdk pixbuf/io pcx.c和libImaging/PcxDecode.cppilow开发人员在github上解决了这个问题!