所以我有一个接受用户输入并将其转换为位图图像的应用程序,我会将其缩放到固定大小,然后以Base64字符串的形式发送给其他人。
代码可以工作,但每当我尝试调整大小时,图像都会在左上角裁剪,而不是实际缩放。
这些是我的代码:
mBitmap = Bitmap.createBitmap(mContent.getWidth(), mContent.getHeight(), Bitmap.Config.RGB_565);
mBitmap = Bitmap.createScaledBitmap(mBitmap,200,300,true);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
我试过看Resizing bitmap is cropping instead of scaling in View和Android - Resizing bitmap cuts it instead of scaling it有类似的问题,但没有一个解决方案真正起作用,或者他们使用的是一种在绘图时调整大小的解决方法,因为我的用例并没有使用要求我画画。
我也试过这个:
public Bitmap getResizedBitmap(Bitmap bm, int newHeight, int newWidth) {
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);
return resizedBitmap;
}
与
mBitmap = getResizedBitmap(mBitmap,300,200);
但这也行不通。