【问题标题】:Trying to create a bitmap from a ByteArrayOutputStream [duplicate]尝试从 ByteArrayOutputStream 创建位图 [重复]
【发布时间】:2014-07-22 16:10:40
【问题描述】:

我的代码可以将来自 url 的 png 文件加载到 ByteArrayOutputStream 中。现在我想把它做成一个位图,这样我就可以画出来了。我试过 位图 bBack=BitmapFactory.decodeStream(output);, 但 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;
}

【问题讨论】:

    标签: android


    【解决方案1】:

    以下内容应该适合您:

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

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

    Read more.

    【讨论】:

      【解决方案2】:

      如果您的目标是从从您的 URL 下载的图像创建 Bitmap 对象,则不需要 ByteArrayOutputStream。你只需要这个:

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

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

      【讨论】:

      • +1 以获得更好的选择
      猜你喜欢
      • 2013-07-03
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多