使用BitmapFactory.Options会导致BitmapFactory中的更改

Don*_*ing 0 android bitmap bitmapfactory

我想要实现的是能够从输入流计算位图的高度和宽度,而无需实际更改BitmapFactory.Options

这就是我做的:

private Boolean testSize(InputStream inputStream){
    BitmapFactory.Options Bitmp_Options = new BitmapFactory.Options();
    Bitmp_Options.inJustDecodeBounds = true;
    BitmapFactory.decodeResourceStream(getResources(), new TypedValue(), inputStream, new Rect(), Bitmp_Options);
    int currentImageHeight = Bitmp_Options.outHeight;
    int currentImageWidth = Bitmp_Options.outWidth;
    if(currentImageHeight > 200 || currentImageWidth > 200){
        Object obj = map.remove(pageCounter);
        Log.i("Page recycled", obj.toString());
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

现在这里的主要问题是它将BitmapFactory.Options更改为无法正确解码的状态.

我的问题是有另一种重置BitmapFactory.Options的方法吗?或其他可能的解决方案

另一种方法:(注意:当应用top方法时,originalBitmap为null)

这是我原来的代码:

Bitmap originalBitmap = BitmapFactory.decodeStream(InpStream);
Run Code Online (Sandbox Code Playgroud)

应用Deev和Nobu Game的建议:(没有变化)

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = false;
    Bitmap originalBitmap = BitmapFactory.decodeStream(InpStream,null,options);
Run Code Online (Sandbox Code Playgroud)

Rom*_*Guy 5

您试图从同一个流中读取两次.流不能用作字节数组.一旦从中读取数据,除非重置流位置,否则无法再次读取数据.您可以在第一次调用decodeStream()之后尝试调用InputStream.reset(),但并非所有InputStream都支持此方法.