原文:https://blog.csdn.net/qq_39496303/article/details/135924407
由于系统设计原因 Inputstream 是不可以被多次读取的
解决方法:将InputStream 流转成 ByteArray,后面使用 ByteArrayInputStream( ByteArray )
将 InputStream 读取到 ByteArray
/**
* 读取InputStream到ByteArray
*/
private fun readInputStreamToByteArray(inputStream: InputStream): ByteArray {
val byteBuffer = ByteArrayOutputStream()
val buffer = ByteArray(1024)
var len: Int
while (inputStream.read(buffer).also { len = it } != -1) {
byteBuffer.write(buffer, 0, len)
}
inputStream.close()
return byteBuffer.toByteArray()
}
以下是使用
val url = URL(urlPath)
val conn = url.openConnection()
conn.connect()
inputStream = conn.inputStream
val byteArray = readInputStreamToByteArray(inputStream!!)
//旋转角度
val origination = getAngle(ByteArrayInputStream(byteArray))
val option = BitmapFactory.Options()
option.inPreferredConfig = Bitmap.Config.ARGB_8888
option.inMutable = true
val tempBitmap =
BitmapFactory.decodeStream(ByteArrayInputStream(byteArray), null, option)