尝试从ByteArrayOutputStream创建位图

时间:2014-07-22 16:10:40

标签: android

我有代码将pl文件从url加载到ByteArrayOutputStream中。现在我想把它变成一个位图,这样我就可以绘制它了。我试过了     位图bBack = BitmapFactory.decodeStream(输出); 但是BitMapFactory不会接受yteArrayOutputStream。

如何从ByteArrayOutputStream对象创建位图? 代码

try {
    URL url = new URL("http://stage.master.embryooptions.healthbanks.com/siteassets/24/ShadyGrove-logo.png");
    InputStream is = (InputStream) url.getContent();
    byte[] buffer = new byte[8192];
    int bytesRead;
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    while ((bytesRead = is.read(buffer)) != -1) {
       output.write(buffer, 0, bytesRead);
    }

/////////////////////////////////////////////////////////////////////////////
//   HOW DO I GET A BITMAP?????????
///////////////////////////////////////////////////////////////////////////////
//                  Bitmap bBack=BitmapFactory.decodeStream(output);
    return "";
} catch (MalformedURLException e) {
                    e.printStackTrace();
   return null;
} catch (IOException e) {
   e.printStackTrace();
   return null;
}

2 个答案:

答案 0 :(得分:2)

下面应该适合你:

byte[] bitmapData = output.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapData , 0, bitmapData.length);

注意:小心加载位图。解码到位图时始终使用BitmapFactory.Options以防止与内存相关的错误。

Read more.

答案 1 :(得分:1)

如果你的目标是从你的URL下载的图像创建一个Bitmap对象,那么ByteArrayOutputStream是不必要的。所有你需要的是:

InputStream is = (InputStream) url.getContent();
Bitmap image = BitmapFactory.decodeStream(is);

您可以查看BitmapFactory的开发者页面以获取更多信息。