Bitmap.createScaledBitmap无法调整图像大小
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bitmap.createScaledBitmap无法调整图像大小相关的知识,希望对你有一定的参考价值。
我试图实现一个代码,用户将添加图像,如果大小更大,图像的大小应小于3MB,然后自动调整大小。我知道这个问题反复询问,但我的代码工作不正常。
以下是我的代码
Uri selectedImage = data.getData();
String[] filePath = {MediaStore.Images.Media.DATA};
Cursor c = getContentResolver().query(selectedImage, filePath, null, null, null);
c.moveToFirst();
int columnIndex = c.getColumnIndex(filePath[0]);
String picturePath = c.getString(columnIndex);
c.close();
bitmap2 = (BitmapFactory.decodeFile(picturePath));
Log.e("path of image 4", picturePath + "");
String str = String.valueOf(bitmap2.getRowBytes() * bitmap2.getHeight());
Log.e("lengh of bitmap.......", str);
// Log.e("lengh of bitmap", String.valueOf(bitmap2.getAllocationByteCount()));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap2.compress(Bitmap.CompressFormat.JPEG, 100, bos);
byte[] bitmapdata = bos.toByteArray();
Bitmap resized = Bitmap.createScaledBitmap(bitmap2, 200, 300, true);
imageView2.setImageBitmap(resized);
setImage("image2");
答案
根据我的理解,您可以这样做,也可以关注This Link
Bitmap yourBitmap;
Bitmap resized = Bitmap.createScaledBitmap(yourBitmap, newWidth, newHeight, true);
要么:
resized = Bitmap.createScaledBitmap(yourBitmap,(int)(yourBitmap.getWidth()*0.8), (int)(yourBitmap.getHeight()*0.8), true);
您也可以使用此方法
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;
}
以上是关于Bitmap.createScaledBitmap无法调整图像大小的主要内容,如果未能解决你的问题,请参考以下文章