重複認識用です。
画像を 8bpp ビットマップに変換できますが、インデックス付きのピクセル形式であるため、サイズを小さくする方法がわかりません。より高いピクセル形式に変更せずにそれを行う方法はありますか (不要な色が増えます)。
ありがとう
これは、2D コンピュータ グラフィックスでよくある問題です。尋ねる必要がある全体的な質問は、何を達成したいのかということです。それは...ですか:
たとえば、私が 8bpp ディスプレイで動作する 2D ゲームをデザインしていたとき、元のソース イメージをすべてフル解像度の 24 ビット カラーで作成するようアーティストに依頼しました。次に、すべてのカラー パレットを一度に統一するワークフロー プロセスを作成したため、すべてのカラー パレットが最適化されたパレットを使用し、可能な限り正確に表現されました。このような場合は、元のソース イメージに戻って、小さいサイズに再変換することをお勧めします。
時々、1 回限りの実験を行ったり、その場でアートを操作したりしていますが、すべての画像が同じパレットを使用していることを確認する必要はありません。この場合、イメージをメモリ内で 24bpp に変換し、バイキュービック補間 (高品質のサイズ変更アルゴリズム) を使用してサイズを変更してから、8bpp に再変換します。欠点は、この方法で行うと、サイズ変更された画像用に新しい独自のパレットが生成されることです。
しかし、パレットを変更せず、内部で 24bpp にアップコンバートせずに画像のサイズを本当に変更したい場合は、2 つの非常に悪い選択のうちの 1 つを使用する必要があります。これはトリッキーで、カラー エラーを注意深く追跡する必要があるプロセスです。または、イメージが目的の正しいサイズに一致するまでスキャン ラインをドロップすることもできます。
参考までに、Neo Geo のような従来の 2D コンソールは、「ライン ドロップ」アプローチに従っていたため、今日の古風でギザギザのグラフィックスの外観になっています。最新のコンソールは、常に 16、24、または 32 ビット カラーで画像をリサンプリングし、色の値を表すために浮動小数点を使用することさえあります。
通常、画像を縮小するときは、色に対して何らかの補間を行います。2x2 の画像があり、上の 2 つのピクセルが黒で、下の 2 つのピクセルが白であるとします。これを 1x2 の画像に縮小します。2 つのピクセルは黒と白の混合物で、グレーです。
BB --> GG
WW
ここで、G = グレー (50% 黒、50% 白)、B = 黒、W = 白です。
ただし、最終的な画像に含まれる灰色は、元の画像には存在しませんでした。インデックス付きの画像の場合、これは問題です。ピクセルの 1 つを選択できます (ランダムに、または何らかのアルゴリズムを使用して)。
BB --> BW
WW
または補間してから、補間の結果に最も近いインデックスの色を選択します。したがって、インデックスに 50% の灰色がなくても、40% はあるということです。それはかなり近いので、代わりにそれを選択できます。十分に近い色がない場合は、最初の方法に戻ることができます。
第三に、通常のビットマップに変換し、サイズを変更してからインデックス付きに戻すこともできますが、質問の言い回しに基づいて、それを避けたいようです。