こんにちは、パイソン枕の助けが必要です。現在、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が含まれています