我有一个自定义视图(1066 x 738),我传递的是位图图像(720x343).我想缩放位图以适应自定义视图,而不超过父级的边界.

我希望实现这样的目标:

我该如何计算位图大小?
我如何计算新的宽度/高度:
public static Bitmap getScaledBitmap(Bitmap b, int reqWidth, int reqHeight)
{
int bWidth = b.getWidth();
int bHeight = b.getHeight();
int nWidth = reqWidth;
int nHeight = reqHeight;
float parentRatio = (float) reqHeight / reqWidth;
nHeight = bHeight;
nWidth = (int) (reqWidth * parentRatio);
return Bitmap.createScaledBitmap(b, nWidth, nHeight, true);
}
Run Code Online (Sandbox Code Playgroud)
但我所取得的成就是:

我想缩放保持纵横比的位图,但适合所需的尺寸。这个答案会缩放位图并保持纵横比,但会留下一些空白,除非图像是完美的正方形。我需要填写宽度和高度,就像FIT_XY一个scaleType属性的ImageView。
有没有办法在不变形的情况下调整位图大小,使其不超过 720*1280 ?较小的高度和宽度完全没问题(在较小宽度或高度的情况下空白画布很好)我尝试了这个/sf/answers/1080891801/,但它给出了扭曲的图像。有人能提出更好的解决方案吗?