为什么bitmap.getWidth()返回的结果跟原始图片大小不一样

本文探讨了在Android中使用BitmapFactory加载图片时遇到的尺寸问题。揭示了Bitmap的实际尺寸会根据设备的dpi进行缩放的现象,并通过计算证实了Bitmap宽度等于像素乘以密度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象:
我有一张图大小是64×64
执行如下代码:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.noodle);
Log.d(TAG, "width: "+bitmap.getWidth()+" height: "+bitmap.getHeight()+ "\r\n");

这里打印出来的却是192和192。为什么明明是64输出的却是192呢?

PS: 直接把png图片改成了24×24, 然后读取出来的是72×72.

查了一下,事实证明就是分辨率的问题。我的原图单位是pixel。可是bitmap.getWidth()返回的值会根据dpi的不同而有所调整,而这个dpi可能会因为机型不同而不同,也就是说如果分辨率更高的手机,这里打印出来的可能是更高的数字。

验证了一下:
getResources().getDisplayMetrics().density
用这个拿到手机的dpi,结果还真的是bitmap.getWidth()返回的结果等于pixel*density.

而我这里测试用的手机density正好是3.0!(64×3=192, 24×3=72)

Cool。。。

转载于:https://www.cnblogs.com/happywu/p/8298135.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值