BitmapFactory.decodeStream读取整个流,此方法后如何读取数据?

时间:2019-12-09 06:33:33

标签: java android stream android-bitmap bitmapfactory

关于BitmapFactory.decodeStream方法,流的位置将是读取编码数据后的位置。因此,我可以将一些额外的数据保存到流中,然后读取它。

这是将位图和数字保存到一个文件中的代码:

val path = File(cacheDir, "test")
val bitmap = BitmapFactory.decodeResource(resources, R.drawable.paper_background_yellow)
val outputStream = FileOutputStream(path)
val dataOutputStream = DataOutputStream(outputStream)
val result = bitmap.compress(Bitmap.CompressFormat.JPEG, 100, dataOutputStream)
dataOutputStream.writeInt(6306)
dataOutputStream.close()

但是当我使用BitmapFactory.decodeStream读取位图时,它读取了整个流,因此当我读取数字时,它给了我一个例外:

java.io.EOFException
    at java.io.DataInputStream.readFully(DataInputStream.java:200)
    at java.io.DataInputStream.readInt(DataInputStream.java:389)

这是读取位图和数字的代码:

val dataInputStream = DataInputStream(FileInputStream(path))
val theBitmap = BitmapFactory.decodeStream(dataInputStream)
var number = dataInputStream.readInt()        //the crash happened.
dataInputStream.close()

我认为流的位置应该在仅对位图进行解码的位置,并且我可以读取该位置之后的数字。但是似乎BitmapFactory.decodeStream会读取整个流。

为什么该方法读取整个流,并且在位图解码后如何读取数字?

0 个答案:

没有答案