gpt4 book ai didi

android - 使用位图时android中的图像尺寸不正确

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:27 25 4
gpt4 key购买 nike

我将 .png 图像文件作为资源存储在我的 android 应用程序中。在我的代码中,我从该图像中分配了新的位图实例,如下所示:

Bitmap img = BitmapFactory.decodeResource(getResources(), R.drawable.imgName);

但是当我使用 getWight() 和 getHeight() 方法从 Bitmap 对象读取图像尺寸时,

int width = img.getWidth();
int height = img.getHeight();

我得到的结果与原始图像不同...谁能解释一下我遗漏了什么,我怎样才能恢复图像大小?

(我的项目符合android 2.2 - API 8)

编辑:好的 - 了解如何获得真实尺寸:将 BitmapFactory.Options 类的 inJustDecodeBounds 属性设置为 true,如下所示:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.drawable.imgName, options);
width = options.outWidth;
height = options.outHeight;

现在的问题是当我们发送 Options 参数时解码器返回 null,所以我需要像以前一样再次解码(没有 Options 参数...)检索 Bitmap 实例 - 很奇怪,不是吗?

最佳答案

要获取准确的资源图像,请使用:

    BitmapFactory.Options o = new Options();
o.inScaled = false;
Bitmap watermark = BitmapFactory.decodeResource(context.getResources(), id, o);

这将关闭自动屏幕密度缩放。

更新:我相信您现在已经意识到了这一点,但 inJustDecodeBounds 就是这样做的,它找到了维度。你不会得到图像。该选项通常用于进行自定义缩放。您最终两次调用 decodeResource,第二次设置:

options.inJustDecodeBounds = false;

并根据您的以下情况对选项进行任何调整:

width = options.outWidth;
height = options.outHeight;

关于android - 使用位图时android中的图像尺寸不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8855036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com