0

こんにちは、パイソン枕の助けが必要です。現在、v2.3.0 と python 3.3 を使用しています。

古いゲーム (Might and Magic VI) から抽出した pcx 画像をテクスチャとして使用しようとしています。(ゲームは 3D 環境の上に 2D UI を持っています。この 2D UI は、さまざまな内部フォーマットと pcx ファイルで構成されています。)

問題は、これらの pcx の 1 つが枕によって正しく表示されないことです。EyeOfGnome 画像ビューアで正しく表示されている間。(gdk-pixbuf) pillow で別の pcx が正しく表示されるようになりました!

間違っているとはどういう意味ですか? 悪い画像には、ピクセルの色の一種の「赤方偏移」があります。左の境界線は少し赤くなっています。それは「3D化」された画像のようで、少しぼやけており、全体が少し暗いです.

ゲームUIの他の部分と合成してほしいのですが、そのままでは使えません。

pcx ファイルを 16 進エディターで開いたところ、pcx ヘッダーで見つかった主な違いは、間違ったファイルに 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