【发布时间】:2016-05-18 12:57:41
【问题描述】:
我想在保持纵横比的情况下缩放位图,但要适合所需的尺寸。 This answer 缩放位图并保持纵横比,但会留下一些空白区域,除非图像是完美的正方形。我需要同时填充宽度和高度,就像 ImageView 的 FIT_XY ScaleType 属性一样。
【问题讨论】:
标签: android bitmap scale scaletype
我想在保持纵横比的情况下缩放位图,但要适合所需的尺寸。 This answer 缩放位图并保持纵横比,但会留下一些空白区域,除非图像是完美的正方形。我需要同时填充宽度和高度,就像 ImageView 的 FIT_XY ScaleType 属性一样。
【问题讨论】:
标签: android bitmap scale scaletype
基于Streets of Boston's answer,我制作了这个方法,它可以缩放任何位图并将其返回到所需的宽度和高度,同时适合两个尺寸(没有空格!)。它会自动适应更多水平或更多垂直的图像。
public Bitmap resizeBitmapFitXY(int width, int height, Bitmap bitmap){
Bitmap background = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
float originalWidth = bitmap.getWidth(), originalHeight = bitmap.getHeight();
Canvas canvas = new Canvas(background);
float scale, xTranslation = 0.0f, yTranslation = 0.0f;
if (originalWidth > originalHeight) {
scale = height/originalHeight;
xTranslation = (width - originalWidth * scale)/2.0f;
}
else {
scale = width / originalWidth;
yTranslation = (height - originalHeight * scale)/2.0f;
}
Matrix transformation = new Matrix();
transformation.postTranslate(xTranslation, yTranslation);
transformation.preScale(scale, scale);
Paint paint = new Paint();
paint.setFilterBitmap(true);
canvas.drawBitmap(bitmap, transformation, paint);
return background;
}
【讨论】: