美文网首页
解决InputStream无法重复读取

解决InputStream无法重复读取

作者: 红鲤鱼与绿鲤鱼与驴与鱼 | 来源:发表于2024-09-23 14:04 被阅读0次

原文: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)

相关文章

网友评论

      本文标题:解决InputStream无法重复读取

      本文链接:https://www.haomeiwen.com/subject/vyxfrjtx.html