5

私はアンドロイドに取り組んでおり、ImageView のウェブサイトからファビコン (.ICO) をダウンロードして表示しようとしています。

これまでのところ、HTTP 接続を使用して Web サイトから .ico を読み取り、それを InputStream として取得することができました。次に、BitmapFactory を使用してストリームをビットマップにデコードし、ImageView に表示します。コードは次のとおりです。

 public Bitmap getBitmapFromURL(URL src) {           
        try {

            URL url = new URL("http", "www.google.com", "/favicon.ico");

            HttpURLConnection connection = (HttpURLConnection) url.openConnection();                

            connection.setDoInput(true);       

            connection.connect();               

            InputStream input = connection.getInputStream();    

            BitmapFactory.Options options = new BitmapFactory.Options();

            Bitmap myBitmap = BitmapFactory.decodeStream(input, null, options);  

            return myBitmap;

        } catch (IOException e) {               
            e.printStackTrace();                
            return null;                
        }
    }

問題は、inputStream のデコードが常に小さな 16x16 ビットマップを返すことです。私がよく理解していれば、1 つの .ICO ファイルに 32x32 や 64x64 などのさまざまな画像解像度を格納できます。私の質問は、16x16 の代わりに 32x32 または 64x64 ビットマップをデコードする方法はありますか?

また、BitmapFactory で解決策がない場合、これを行うためのライブラリまたは Java コードはありますか?

注:ビットマップのサイズを変更したくありません。引き延ばして画質を落とさずに 32x32 (またはそれ以上) の解像度が必要です。

前もって感謝します。

4

2 に答える 2

1

ファビコン ファイルには複数のアイコンが含まれる場合があり、通常は 16x16 に 1 つと 32x32 に 1 つです。これについては、次のスレッドで説明しています。

Google の favico がそうです。www.google.com/favicon.icoファイルをダウンロードしてIrfanViewなどのアプリケーションで開いてみると、2 つのアイコン (16x16 と 32x32) があることがわかります。

あなたの質問に答えるには、適切なライブラリを使用してimage4jなどの複数のアイコンを抽出し、必要なものを選択する必要があります。

http://image4j.sourceforge.net/

于 2013-09-11T09:47:10.387 に答える