BitmapFacotry.decodeByteArray为有效图像的字节数组返回null

时间:2013-09-05 12:51:40

标签: android bitmap

这是mp3文件标签中的图像 http://i.stack.imgur.com/HtXqA.jpg

我使用Android的MediaMetaDataRetreiver从mp3文件中获取此图像字节数组...当我尝试使用BitmapFactory.decodeByteArray解码此图像时,它返回null

帮助将得到赞赏

编辑:当我第一次用options.inJustDecodeBounds = true解码时... options.outWidth和options.outHeight返回正确的宽度和高度

完整代码:

MediaMetadataRetriever retriever = new MediaMetadataRetriever();
        retriever.setDataSource(context, songUri);
        byte[] data = retriever.getEmbeddedPicture();
        if(data != null)
        {
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = true;
            BitmapFactory.decodeByteArray(data, 0, data.length, options);
            options.inSampleSize = BitmapUtils.calculateInSampleSize(options, 500, 500);
            options.inJustDecodeBounds = false;
            albumArtBitmap = BitmapFactory.decodeByteArray(data, 0, data.length, options);
        }

1 个答案:

答案 0 :(得分:1)

改用流:

InputStream is;
    Bitmap bitmap;
    is = context.getResources().openRawResource(R.drawable.someImage);

    bitmap = BitmapFactory.decodeStream(is);
    try {
        is.close();
        is = null;
    } catch (IOException e) {
    }
顺便说一句,我还没有尝试jpg但是假设这可能是个问题。尝试将其转换为" png"