外观
如何根据屏幕密度和控件大小计算 Bitmap 的最优采样率(inSampleSize)?
标准回答
先用 inJustDecodeBounds 读取原图像素宽高,再把控件需要显示的尺寸换算成目标像素。选择不会让解码图小于所需尺寸的采样率;常用做法是取满足原宽/s ≥ 目标宽、原高/s ≥ 目标高的最大 2 的幂。
**计算例子:**原图 4000×3000px,要显示为 1000×750px,可取 inSampleSize=4。尺寸已经是像素时不要再乘 density;centerCrop 等缩放方式也要计入目标需求。
通俗例子
4000×3000 的照片只显示到 1000×750,可考虑约 4 倍采样;目标尺寸先转换成像素,并考虑裁剪方式。
易混淆点
采样规则存在格式和系统差异,最终以解码后的实际宽高与 allocationByteCount 为准。
内容来源
- Android · AI Agent 知识手册 · 原条目
3.3.1