0
很简单的问题,找不到答案..Android - ImageView调整图像大小(并且不保存原图)?
我在问,为了知道如果即使ImageView显示原始图像的较小版本 - 它仍然使用完整的内存大小原本的 .. ? (我指的是从SD卡加载而不是从资源加载的图像)
很简单的问题,找不到答案..Android - ImageView调整图像大小(并且不保存原图)?
我在问,为了知道如果即使ImageView显示原始图像的较小版本 - 它仍然使用完整的内存大小原本的 .. ? (我指的是从SD卡加载而不是从资源加载的图像)
是的,它会使用原始大小。您必须调整所有位图的大小然后将其分配给ImageView,否则内存不足错误会出现很多问题。
您还应该计算ImageView的最终大小并调整位图的大小。
一些代码让你去。
private static Bitmap createBitmap(@NonNull String filePath, int width)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(filePath , options);
// Getting original image properties
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
int scale = -1;
if (imageWidth < imageHeight) {
scale = Math.round(imageHeight/width);
} else {
scale = Math.round(imageWidth/width);
}
if (scale <= 0)
scale = 1;
options.inSampleSize = scale;
options.inJustDecodeBounds = false;
// Create a resized bitmap
Bitmap scaledBitmap = BitmapFactory.decodeFile(filePath , options);
return scaledBitmap;
}
你还应该考虑:
不能要求更多,谢谢! –