BitmapFactory无法解码CipherInputStream两次

时间:2011-01-07 03:30:10

标签: android image encryption

我加密,然后解密一个图像然后传递给我的图像工具来调整大小,(代码慷慨地从某个地方借来的)像这样:

public static Bitmap loadResizedBitmap(InputStream dis, int width, int height) {

    BufferedInputStream bis = new BufferedInputStream(dis);
    Bitmap bitmap = null;
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    BitmapFactory.decodeStream(bis, null, options);
    if (options.outHeight > 0 && options.outWidth > 0) {
        options.inJustDecodeBounds = false;
        options.inSampleSize = 2;

        while (options.outWidth / options.inSampleSize > width && 
                options.outHeight / options.inSampleSize > height) {
            options.inSampleSize++;
        }
        options.inSampleSize--;
        bitmap = BitmapFactory.decodeStream(bis, null, options);
    }
    return bitmap;
}

问题出在第二个 decodeStream 期间,BitmapFactory返回 null 。我已经验证了第一个工作,并输出正确的大小等。我的猜测是CipherInputStream不支持标记和重置,所以我将它包装在BufferedInputStream中,没有运气。还有其他人有什么建议吗?

1 个答案:

答案 0 :(得分:3)

[ANSWERED]

我将其切换为使用BitmapFactory.decodeByteArray并解决了它。我又看了一下API,我能够传递一个字节[]。

我的内容是CipherInputStream不支持mark()和reset()。