将 ImageView 转换为具有本机分辨率的位图

Posted

技术标签:

【中文标题】将 ImageView 转换为具有本机分辨率的位图【英文标题】:Convert ImageView to Bitmap with native resolution 【发布时间】:2019-08-03 11:34:52 【问题描述】:

我有以下问题:我的imageView 被转换为bitmap,当将位图保存到我的画廊时,我可以清楚地看到位图的分辨率/格式与 imageView 相同。但我想获得未裁剪的分辨率。

是否可以将 imageView 转换为具有原生分辨率的 Bitmap?

我想将 imageView 转换为位图,而不是通过图像源 (URL) 创建新的位图,因为我需要实现新的异步...

当前转换代码:

BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();

清除: 网站上的图片分辨率为800*800px,而我的imageView 的分辨率为300*300dp(更小),我想要源的分辨率。这可能吗?

【问题讨论】:

“原生解决方案”是什么意思? 本机分辨率:例如,网站上的图像分辨率为 500*800 像素,而我的 imageView 的分辨率为 300*300dp(小得多),我想要源的分辨率.. 使用 glide 库获取图片为位图 【参考方案1】:

只需使用 Glide 加载带有自定义 Target 的图像。

Glide.with(context) //or view
    .asBitmap()
    .load(imagePath)
    .into(object : CustomTarget<Bitmap>()
        override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) 
            // do whatever you want with the 'resource' Bitmap
        
        override fun onLoadCleared(placeholder: Drawable?) 
            // this is called when imageView is cleared on lifecycle so you can recycle your bitmap
        
    )

【讨论】:

以上是关于将 ImageView 转换为具有本机分辨率的位图的主要内容,如果未能解决你的问题,请参考以下文章

Android - 将 ImageView 保存到具有全分辨率图像的文件

如何在画布上绘制并转换为位图?

将位图 (bmp) 转换为具有透明度的 png (Windows c++)

位图太大了。尝试了全部

将图像位图添加到简单适配器 Android

未将位图设置为imageview