从URL下载图像有些问题

时间:2013-01-31 14:56:23

标签: android bitmap 32-bit 24-bit

我使用以下方法从网址下载图片

private Bitmap getBitmap(String url) 
    {
        File f=fileCache.getFile(url);
        Log.d("getBitmap", "getBitmap"+url);
        //from SD cache
        Bitmap b = decodeFile(f);
        if(b!=null)
            return b;

        //from web
        try {
            Bitmap bitmap=null;
            URL imageUrl = new URL(url);

            HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();
            conn.setConnectTimeout(30000);
            conn.setReadTimeout(30000);
            conn.setInstanceFollowRedirects(true);
            InputStream is=conn.getInputStream();
            OutputStream os = new FileOutputStream(f);
            Utils.CopyStream(is, os);
            os.close();

            bitmap = BitmapFactory.decodeStream(is);
            return bitmap;
        } catch (Exception ex){
            ex.printStackTrace();
            return null;
        }
    }

对我来说,这种方法适用于与Image对应的所有URL 问题在于它不适合跟随

http://downloads.hyperin.com/hyperin-portal/imageserver/news/13442/ginatricot.jpg

适合关注网址

http://downloads.hyperin.com/hyperin-portal/imageserver/news/12042/Myfit_liity_nyt.jpg

为了调试我在浏览器中打开图像并将其下载到我的PC上检查了它的属性,并发现这是32位图像,其他成功下载的图像是24位。 我不知道为什么同样的代码无法下载成功下载24位图像的32位图像。我的代码遗漏了什么? android不支持32位图像吗?或者是什么?请建议我搞清楚解决方案

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

不要重新发明轮子,试试这个https://github.com/koush/UrlImageViewHelper

答案 2 :(得分:0)

public static Bitmap getImagefromURL(String url) {
HttpURLConnection connection  = (HttpURLConnection) url.openConnection();
InputStream is = connection.getInputStream();
Bitmap img = BitmapFactory.decodeStream(is);  
return img;
}