Android调整位图大小以保持纵横比

Android调整位图大小以保持纵横比,android,bitmap,scale,Android,Bitmap,Scale,我有一个自定义视图(1066x738),我正在传递一个位图图像(720x343)。我想缩放位图以适应自定义视图,而不超过父视图的范围 我想实现这样的目标: 如何计算位图大小 如何计算新的宽度/高度: public static Bitmap getScaledBitmap(Bitmap b, int reqWidth, int reqHeight) { int bWidth = b.getWidth(); int bHeight = b.get

我有一个自定义视图(1066x738),我正在传递一个位图图像(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);
    }
但我所取得的成就是:


您应该尝试使用为
ScaleToFit.CENTER
构建的转换矩阵。例如:

Matrix m = new Matrix();
m.setRectToRect(new RectF(0, 0, b.getWidth(), b.getHeight()), new RectF(0, 0, reqWidth, reqHeight), Matrix.ScaleToFit.CENTER);
return Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), m, true);

您可以在自定义视图的XML中添加
scaleType
标志。这不是图像视图!啊,我(错误地)假设你的自定义视图扩展了ImageView。。。我的错不是为我工作。我尝试使用此选项以分辨率缩小图像大小,但没有效果。@DroidWormNarendra然后可以调用
Bitmap.createScaledBitmap(out,reqWidth,reqHeight,false),这将减少图像大小。@matiash,请看一下这个问题对我有用。。