我从远程数据库中获取了一个Base64字符串的位图,( encodedImage
是用Base64表示图像的字符串):
profileImage = (ImageView)findViewById(R.id.profileImage);
byte[] imageAsBytes=null;
try {
imageAsBytes = Base64.decode(encodedImage.getBytes());
} catch (IOException e) {e.printStackTrace();}
profileImage.setImageBitmap(
BitmapFactory.decodeByteArray(imageAsBytes, 0, imageAsBytes.length)
);
profileImage is my ImageView
好的,但是我必须在我的 ImageView
布局上显示之前调整此图像的大小 . 我必须将其调整为120x120 .
有人能告诉我调整大小的代码吗?
我找到的示例无法应用于base64字符串获取的位图 .
13 回答
在这种情况下有人问如何保持纵横比:
计算用于缩放的因子,并将其用于两个维度 . 假设您希望图像的高度为屏幕的20%
获得屏幕分辨率,你有这个解决方案:Get screen dimensions in pixels
编辑:正如@aveschini所建议的那样,我已经为内存泄漏添加了
bm.recycle();
. 请注意,如果您将上一个对象用于其他目的,请相应处理 .位图根据任何显示大小调整大小
如果您已有位图,则可以使用以下代码调整大小:
从API 19开始,存在Bitmap setWidth(int width)和setHeight(int height) . http://developer.android.com/reference/android/graphics/Bitmap.html
使用目标最大大小和宽度缩放位图,同时保持纵横比:
基于 aspect ratio 的比例:
使用height作为宽度的基本intead更改为:
试试这个:这个函数按比例调整位图大小 . 当最后一个参数设置为"X"时,
newDimensionXorY
被视为s新宽度,当设置为"Y"时为新高度 .更改:
至:
试试这个代码:
我希望它有用 .