调整位图大小是裁剪而不是缩放

时间:2016-01-06 07:25:47

标签: android image bitmap base64

所以我有一个接受用户输入并将其转换为位图图像的应用程序,我会将其缩放到固定大小,然后以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 ViewAndroid - 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);

但这也行不通。

0 个答案:

没有答案
相关问题