android - 如何在不调整大小的情况下从 res 加载位图?

标签 android bitmap

使用此代码:

    Drawable blankDrawable = context.getResources().getDrawable(image);
    Bitmap blankBitmap=((BitmapDrawable)blankDrawable).getBitmap();

我得到一个按上下文密度缩放的位图,保留位图的物理大小(基于其 dpi 值)。例如,我有一个 405x500 位图 (dpi=96) 作为资源。但是当我将它加载到设备上时,我会得到一个密度为 240 的 608x750 图像。我想加载位图而不进行缩放。我该怎么做?

这个问题非常类似于:

How to create a Drawable from a stream without resizing it?

但是,在我的情况下不能使用该解决方案,因为我没有输入流。我只有一个资源 id,getDrawable() 方法没有密度参数。加载位图后,为时已晚 - 它已经调整大小。

谢谢。

最佳答案

使用这个

InputStream is = this.getResources().openRawResource(imageId);
Bitmap originalBitmap = BitmapFactory.decodeStream(is);  
imageview.setImageBitmap(originalBitmap);

关于android - 如何在不调整大小的情况下从 res 加载位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7619207/

相关文章:

java - 尝试使用 Intent 启动新应用程序并让启动的应用程序使用新应用程序登录凭据自动登录

c++ - 从另一个 HBITMAP 复制位图

Android - 我应该继续使用 PreferenceActivity 吗?

android - 谷歌播放调试购买

android - Facebook 登录 CallbackManager FacebookCallback 每次都调用 onCancel()

android - Webview 和 iFrame 视频全屏问题

android - 如何在ImageView中显示位图后获取位图的大小

java - Android - 是否可以在指定位置将图像插入到另一个图像中?

java - 在Android中将base64字符串解码为位图

java - 在 SurfaceView 上加载和显示 jpeg 的最快方法?