1

我有一个从网站 ( http://radar.weather.gov/ridge/RadarImg/N0R/ ) 抓取的 GIF,并希望显示给用户。我正在构建 Jelly Bean (4.1) 并且在我对这个主题的搜索中发现 GIF 兼容性正在逐步用于 Android 并且完全不适用于 Jelly Bean。

所以,我想即时将 GIF 转换为 PNG。我该怎么做?是否像将字节从 GIF 读取到 PNG 文件一样简单?

我将使用 ImageView 在 UI 上显示图像。

4

1 回答 1

2

在稍微改变了我的问题后,我在这里通过全能的谷歌找到了答案:

http://gayashan-a.blogspot.com/2012/02/android-how-to-display-gif-image-in.html

总结在这里:

public Bitmap getBitmap(String url)
{
    Bitmap bmp = null;
    try
    {
        HttpClient client = new DefaultHttpClient();
        URI imageUri = new URI(url);
        HttpGet req = new HttpGet();
        req.setURI(imageUri);
        HttpResponse resp = client.execute(req);
        bmp = BitmapFactory.decodeStream(resp.getEntity().getContent());            
    }
    catch(URISyntaxException ex)
    {           
        Log.e("ERROR", ex.getMessage());
    }
    catch(ClientProtocolException ex)
    {
        Log.e("ERROR", ex.getMessage());
    }
    catch(IllegalStateException ex)
    {
        Log.e("ERROR", ex.getMessage());
    }
    catch(IOException ex)
    {
        Log.e("ERROR", ex.getMessage());
    }

    return bmp;
}

这会将其解码为可以压缩为 PNG 的位图 ...

Bitmap mCurrentRadar = getBitmap("http://radar.weather.gov/ridge/RadarImg/N0R/ABC_N0R_0.gif");
ByteArrayOutputStream stream = new ByteArrayOutputStream();     
mCurrentRadar.compress(Bitmap.CompressFormat.PNG, 100, stream);

...或者可以立即用于ImageView...

ImageView imageView = (ImageView) findeViewById(R.id.radarImageView);
imageView.setImageBitmap(getBitmap("http://radar.weather.gov/ridge/RadarImg/N0R/ABC_N0R_0.gif");
于 2013-02-25T00:18:48.473 回答