加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 有没有办法将.ICO文件解码为大于16×16的分辨率?

发布时间:2020-12-14 19:36:33 所属栏目:Java 来源:网络整理
导读:我正在研究 android并试图从 ImageView上的网站下载并显示一个favicon(.ICO). 到目前为止,我已经设法使用HTTP连接从网站读取.ico,将其作为InputStream检索.然后我使用BitmapFactory将流解码为Bitmap并将其显示在ImageView上.这是代码: public Bitmap getBit
我正在研究 android并试图从 ImageView上的网站下载并显示一个favicon(.ICO).

到目前为止,我已经设法使用HTTP连接从网站读取.ico,将其作为InputStream检索.然后我使用BitmapFactory将流解码为Bitmap并将其显示在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的解码总是返回一个小的16×16位图.如果我很好理解,单个.ICO文件可以存储不同的图像分辨率,如32×32和64×64.我的问题是,有没有办法解码32×32或64×64位图而不是16×16?

另外,如果没有BitmapFactory的解决方案,是否有库或ja??va代码来执行此操作?

注意:我不想调整位图的大小,我想要一个32×32(或更大)的分辨率,而不会通过拉伸损失图像质量.

提前致谢.

解决方法

我知道这个问题是在3年前被问到的,但是我遇到了同样的问题,并将image4j的一部分改编成了ico4a,你可以在这里找到: https://github.com/divStar/ico4a(我自己写的是因为我想从一个图标加载最大的图像;因为image4j使用AWT类,这对于Android来说不容易获得,所以我这样做了ico4a主要使用原生的android类).

它可以将大多数有效的ICO文件解码为Bitmap对象列表.我相信库本身或示例应用程序也有一个方法来检索最大的Bitmap对象.

但是,我的库无法编写ICO文件;它只能读取它们.尽管使用了一些内置的Android功能,您可以轻松地将各个图像保存为PNG或JPEG图形.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读