BitmapFactory.decodeStream。报错:SkImageDecoder::Factory returned null 原因及解决方法

原创 2016年06月01日 14:25:18

最近在写一个相机调用相册的图片,显示到桌面的View上,BitmapFactory.decodeStream 调用了 结果报错了SkImageDecoder::Factory returned nul。

废话不多说,来上我自己的代码。

if(resultCode==RESULT_OK){
				try {
					Bitmap bitmap=BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
					
					picture.setImageBitmap(bitmap);
				} catch (FileNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}

看了很多博客,还是不太明白,看了源代码好像明白了。

下面是BitmapFactory.decodeStream 的SDK源代码

 public static Bitmap decodeStream(InputStream is, Rect outPadding, Options opts) {
        // we don't throw in this case, thus allowing the caller to only check
        // the cache, and not force the image to be decoded.
        if (is == null) {
            return null;
        }

        // we need mark/reset to work properly

        if (!is.markSupported()) {
            is = new BufferedInputStream(is, 16 * 1024);
        }

        // so we can call reset() if a given codec gives up after reading up to
        // this many bytes. FIXME: need to find out from the codecs what this
        // value should be.
        is.mark(1024);

用中文解释下

1、当is这个inputstream为空时,我们不抛出异常。因此仅允许调用者检查缓存,不强制把图片解码。

2、我们需要标记和重置来让解析图片这个工作更恰当

3、所以,当读取的字节到1024(1kb)时,解码器停止解码,之后我们调用重置方法。


注:is.mark(1024),这个方法是写死的。即当图片超过1kb,我们解析到1kb的时候,然后重置,就会抛出异常。


解决方法:使用BitmapFactory.decodebyteArrays 或者 BitmapFactory.Options





版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

关于异常:SkImageDecoder::Factory returned null

开发中遇到一个问题: 04-07 23:51:59.590: D/skia(7827): --- SkImageDecoder::Factory returned null 本来是下载一大批图片的,...

SkImageDecoder::Factory returned null

Android 开发中,使用HttpURLConnection加载网络图片的时候,偶尔会出现:“SkImageDecoder::Factory returned null”错误!代码如下: HttpU...

SkImageDecoderFactory returned null产生的终极解决方案

SkImageDecoderFactory returned null产生的终极解决方案 由于在项目需要使用到多图片的处理,因此采取了BitmpFactory的使用,在刚开始的时候,加载多图片,会经常...

Android加载图片出现SKImagedecoder::Factory returned null 该怎么解决

引用别人的回复,试了下,没问题了; 这个不是从sd卡读图片产生的问题,从sd卡读图片用 Bitmap bitmap = BitmapFactory.decodeFile(imagePath)...

SkImageDecoder::Factory returned null

SkImageDecoder::Factory returned null 系统版本: 4.0.3直接使用BitmapFactory.decodeStream(mInputStream);造成的错误...

SkImageDecoder::Factory returned null

最近在做大图片的加载,途中遇到这样一个问题:  图片在压缩文件中,我先用BitmapFactory取图片尺寸,计算之后再按照合适尺寸取出Bitmap,代码如下:  options.inJustDe...

Android N Graphics之BitmapFactory

首先我们来看BitmapFactory提供给应用层的接口,一层一层往下分析:一. 应用在加载图像的时候可以调用decodeFile来加载指定文件: /** * Decode a...

安卓BitmapFactory.decodeStream()返回null的问题解决方法

今天遇到了一个问题,最终解决,记录下解决方案: 问题:从网络获取图片,数据为InputStream流对象,然后调用BitmapFactory的decodeStream()方法解码获取图片,返回nul...
  • catoop
  • catoop
  • 2013-01-05 18:25
  • 17878

BitmapFactory.decodeStream方法返回null的错误分析

这个问题其实早就遇到了,由于停了几天电无法工作,今天就把这问题记录下分享下。利用BitmapFactory加载网络中的图片时,使用decodeStream方法会返回null的错误。主要是由于下面几个原...

安卓BitmapFactory.decodeStream()返回null的问题解决方法

今天遇到了一个问题,最终解决,记录下解决方案: 问题:从网络获取图片,数据为InputStream流对象,然后调用BitmapFactory的decodeStream()方法解码获取图片,返回n...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)