【发布时间】:2019-05-14 02:40:38
【问题描述】:
我有一个创建的位图。尺寸不具体。有时是 120x60、129x800、851x784。它没有特定的值...我想让这些位图始终调整为 512x512,但不改变原始图像的纵横比。并且无需裁剪。新图像必须具有 512x512 的画布,并且原始图像必须居中且没有任何裁剪。
我正在使用此功能调整位图的大小,但它使图像非常糟糕,因为图像适合 X 和 Y 。我不希望图像同时适合 x 和 y 适合其中一个并保持其纵横比。
public Bitmap getResizedBitmap(Bitmap bm, int newWidth, int newHeight) {
int width = bm.getWidth();
int height = bm.getHeight();
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// CREATE A MATRIX FOR THE MANIPULATION
Matrix matrix = new Matrix();
// RESIZE THE BIT MAP
matrix.postScale(scaleWidth, scaleHeight);
// "RECREATE" THE NEW BITMAP
Bitmap resizedBitmap = Bitmap.createBitmap(
bm, 0, 0, width, height, matrix, false);
bm.recycle();
return resizedBitmap;
}
我有什么;
我想要什么;
【问题讨论】:
-
所以你想添加一个填充。在您的示例中,左右填充。当原始图像的宽度大于高度时,您需要添加顶部和底部填充。
-
@J.A.P 显然 Mahir 是在谈论像素纵横比,而不是图像纵横比。
-
我想将我的原始图像以 512x512 空位图为中心,并且没有任何裁剪,您可以从我添加到问题的图像中理解。再次感谢。
-
不,这在技术上是不可能的。中心 1 像素线 :)
-
您需要的是填充。 scaleWidth 和 scaleHeight 的最小值是您的拉伸因子并计算剩余的空间并将其用于填充以将您的位图居中到另一个。见这里adilatwork.blogspot.com/2012/10/…
标签: java android bitmap android-bitmap