-1

.ICO ファイルを 16x16 より大きい解像度にデコードする方法はありますか? 2年前から、最良の提案はimage4jを使用することでした. 残念ながら、クラス「IndexColorModel」、「BufferedImage」、および「WritableRaster」が利用できないため、特にアンドロイドでは機能しません。

「BufferedImage」を「Bitmap」に置き換えることで回避することができますが、「WritableRaster」を使用しなくてもうまくいく可能性がありますが、代わりに setPixel を使用して個々の (またはグループの) ピクセルを設定することもできますが、「IndexColorModel」を置き換えることはできません。頭を包むことができないからです。

現在、ウェブサイトからファビコンをダウンロードしていますが、通常、その中に複数の画像が保存されています。画像はサイズ違いです。私は ICO ファイルの構造を調べて、できる限り image4j を分析しました。それでも、AWT を使用しないようにさまざまなクラスをリファクタリングするのに苦労しています。

BitmapFactory は ICO ファイルをロードできます。残念ながら、最初の画像のみをロードするため (これは少なくとも私の推測です)、どの画像をロードするかを決定することはできません (それらをすべてロードして選択させることはできません)。

2 年前から何かが変更されたかどうか、または image4j の BMPDecoder などのリファクタリングを手伝ってくれる人はいますか? それとも、まったく異なる、より簡単なアプローチがあるのでしょうか?

4

1 に答える 1

2

ICO ファイルをビットマップ オブジェクトのリストに読み込むことができる image4j に基づくライブラリを作成しました。image4j とは対照的に、ico4a は AWT クラスを使用せず、代わりに Bitmap / Bitmap.createBitmap のみを使用します。

https://github.com/divStar/ico4aを参照してください。

ループ内で Bitmap オブジェクトの setPixel メソッドを使用するため、ライブラリのパフォーマンスは最高ではないかもしれませんが、作業は完了しており、私にとっては十分です。

image4j と比較して、私のライブラリ (ico4a) はファイルのデコード/読み取りのみを行います。ICO ファイルの保存はおそらく比較的簡単に行うことができますが、私自身は必要ないので行っていません。

ライブラリについてさらに質問や問題がある場合は、gitHub に投稿してください。私がお手伝いできるかどうかを確認します。

于 2016-03-12T12:22:01.077 に答える