我有.png图像文件存储为我的Android应用程序中的资源.在我的代码中,我从该图像分配新的Bitmap实例如下:
Bitmap img = BitmapFactory.decodeResource(getResources(), R.drawable.imgName);
Run Code Online (Sandbox Code Playgroud)
但是当我使用getWight()和getHeight()方法从Bitmap对象读取图像尺寸时,
int width = img.getWidth();
int height = img.getHeight();
Run Code Online (Sandbox Code Playgroud)
我从原始图像得到了不同的结果......有人可以解释我缺少什么,我怎样才能检索图像大小?
(我的项目符合android 2.2 - API 8)
编辑:确定 - 了解如何获取真实尺寸:将类的inJustDecodeBounds属性设置BitmapFactory.Options为true,如下所示:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.drawable.imgName, options);
width = options.outWidth;
height = options.outHeight;
Run Code Online (Sandbox Code Playgroud)
现在的问题是当我们发送Options参数时解码器返回null ,所以我需要像我之前那样再次解码(没有Options参数...)来检索Bitmap实例-bizarre,不是吗?
Ant*_*ony 11
要获得确切的资源图像使用:
BitmapFactory.Options o = new Options();
o.inScaled = false;
Bitmap watermark = BitmapFactory.decodeResource(context.getResources(), id, o);
Run Code Online (Sandbox Code Playgroud)
这会关闭自动屏幕密度缩放.
更新:我确定你现在意识到这一点,但是在JustDecodeBounds就是这样,它找到了尺寸.你不会得到一个图像.该选项通常用于自定义缩放.你最后调用decodeResource两次,第二次设置:
options.inJustDecodeBounds = false;
Run Code Online (Sandbox Code Playgroud)
并根据您的以下内容对选项进行任何调整:
width = options.outWidth;
height = options.outHeight;
Run Code Online (Sandbox Code Playgroud)
Android 会根据不同的密度缩放图像(以针对不同屏幕分辨率和尺寸的方式)。将图像的单独副本放置在drawable-ldpi、drawable-hdpi、drawable-xhdpi、drawable 文件夹中。
| 归档时间: |
|
| 查看次数: |
5128 次 |
| 最近记录: |