获取网络请求的图片的宽高

在开发中,加入我们的使用的图片来自网页,没有人知道它的大小,这时我们还怎么做呢?

图片的大小我们可以让后台给我们指定一下,为什么呢? 因为如果我们不指定图片的大小而是使用加载图片的组件的适配去做,会出现有时候的图片的大小和我们指定的图片大小和缩放的规则错差特别大,出现图片被拉伸或者是压缩的图片,为什么说来自网页的图片会不好计算大小呢?其实不管怎么杨的图片 都可以,并且使用之前不知道所以组件的大小我们指定后会出现问题的

所以我在我们要获取到图片的大小,再去计算控件因该使用的大小

fun getInputStream(path: String): InputStream {
    var inPutStream: InputStream? = null
    if (!TextUtils.isEmpty(path)) {
        val url: URL = URL(path)
        val openConnection: HttpURLConnection = url.openConnection() as HttpURLConnection
        openConnection.connectTimeout = 5 * 1000
        openConnection.doInput = true //打开输入流
        openConnection.requestMethod = "GET"
        if (200 == openConnection.responseCode) {
            inPutStream = openConnection.inputStream
        } else {
            Toast.makeText(this, "连接失败", Toast.LENGTH_SHORT).show()
        }
    }
    return inPutStream!!
}

fun getBitmap(url: String): IntArray {
    val size: IntArray = intArrayOf(2)
    object : AsyncTask<Void, Void, Bitmap>() {
        override fun doInBackground(vararg params: Void): Bitmap? {
            System.out.println("url : " + url)
            val input: InputStream = getInputStream(url)
            if (input != null) {
                return BitmapFactory.decodeStream(input);
            } else {
                return null
            }
        }

        override fun onPostExecute(result: Bitmap?) {
            super.onPostExecute(result)
            var result: Bitmap = result!!
            if (result == null) {
                result = BitmapFactory.decodeResource(resources, R.mipmap.ic_launcher)
            }
            size[0] = result!!.width
            size[1] = result!!.height
            System.out.println("bitmap.getWidth() : " + result.width)
            System.out.println("bitmap.getHeight() : " + result.height)
            super.onPostExecute(result);
        }
    }.execute()
    return size
}
这样 我们就拿到了图片的大小,我们再根据图片的大小计算控件的大小,然后给控件设置图片,就能减少图片被压缩活着拉伸的问题了




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值