1

GD 画像ライブラリ関数 ImageCopyResampled() を使用して PNG 画像のサイズを変更しています。ImageCreate() を使用してサイズ変更された画像を作成するのではなく、ImageCreateTrueColor() を使用してアルファ ブレンディングの透過性を維持することもできます。

問題は、ImageCreate() ではなく ImageCreateTrueColor() を使用すると、PNG ファイルのファイル サイズが 80kb から 150kb に増加することです。ImageCreate() を使用すると、ファイルサイズはほぼ同じサイズのままですが、色がねじれます!

私の質問は、PNG 画像のサイズを変更するときに、ファイル サイズを大きくせずにアルファ ブレンディングを維持するにはどうすればよいですか?

ああ、私はPNGの寸法を縮小しています。

4

1 に答える 1

1

imagecreate()インデックス付きカラー PNG ファイルを作成imagecreatetruecolor()し、24 ビット カラー PNG ファイルを作成します。もちろん、リサンプリング時に使用できる色の範囲がはるかに広いため、トゥルー カラー イメージの方がリサンプリング品質がはるかに優れているように見えます。ではimagecreate()、システムははるかに小さいパレットしか使用できません。

Photoshop または Gimp を使用して、さまざまなカラー モード (インデックス付きおよび RGB) で画像をスケーリングして、これを試すことができます。残念ながら、これはゲームの性質上、保存する色が多いほどファイル サイズが大きくなります。

それが違いを生むかどうかはわかりませんが、imagecopyresampled()(から)トゥルーカラー リソースにコピーしてから、それをパレット イメージ リソースにimagecreatetruecolor()コピー(ただしリサンプリングはしない)してみてください。このようにして、リサンプリングされた結果に基づいてパレットが決定されます。ただし、アルファチャンネルを保持できるかどうかはわかりません。

于 2010-04-16T02:44:17.313 に答える