【问题标题】:Android BitmapFactory vs. BufferedInputStreamAndroid BitmapFactory 与 BufferedInputStream
【发布时间】:2017-02-06 22:49:02
【问题描述】:

BitmapFactory.decodeStream(InputStream) 是否已经大量读取,还是应该确保将BufferedInputStream 而不是原始InputStream 传递给它?

我问,好像BitmapFactory 还没有在相当大的块中进行 IO,那么在传递输入流之前应该清楚地对输入流应用缓冲。但是,如果它已经在大块中工作,那么应用缓冲实际上只是添加了一组不必要的 memcpy() 操作。

如果那些编写使用InputStreamOutputStream 参数的API 的人在Javadoc 中对此类内容进行了明确说明,那就太好了。

目前,除非InputStreamAssetManager.AssetInputStream 的实例,否则我正在应用缓冲,因为我注意到decodeStream() 下对该情况的特殊处理。

【问题讨论】:

    标签: android bitmapfactory bufferedinputstream


    【解决方案1】:

    如果您查看实现,那么 decodeStream 可能会调用两种方法。

    • nativeDecodeAsset(),当我查看类时,它似乎没有显示实现

    • decodeStreamInternal(),根据DECODE_BUFFER_SIZE的大小判断一次读取16 * 1024字节

      (我发布了代码,但格式似乎现在被破坏了)

    所以我认为使用BitmapFactory.decodeStream() 是一个安全的选择

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-19
      • 2012-06-18
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 2017-05-05
      • 2011-12-18
      • 1970-01-01
      相关资源
      最近更新 更多