我有.png图像文件存储为我的
Android应用程序中的资源.
在我的代码中,我从该图像分配新的Bitmap实例如下:
在我的代码中,我从该图像分配新的Bitmap实例如下:
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实例-bizarre,不是吗?
解决方法
要获得确切的资源图像使用:
BitmapFactory.Options o = new Options(); o.inScaled = false; Bitmap watermark = BitmapFactory.decodeResource(context.getResources(),id,o);
更新:
我相信你现在已经意识到了这一点,但是在JustDecodeBounds就是这样,它找到了尺寸.你不会得到一个图像.该选项通常用于自定义缩放.您最终调用decodeResource两次,第二次设置:
options.inJustDecodeBounds = false;
并根据您的以下内容对选项进行任何调整:
width = options.outWidth; height = options.outHeight;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。