原文:https://blog.csdn.net/qq_39496303/article/details/135924407
由于系統(tǒng)設(shè)計(jì)原因 Inputstream 是不可以被多次讀取的
解決方法:將InputStream 流轉(zhuǎn)成 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!!)
//旋轉(zhuǎn)角度
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)