作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果你有一个 Uri 并且你需要 Bitmap
,理论上你可以这样做
Bitmap troublinglyLargeBmp =
MediaStore.Images.Media.getBitmap(
State.mainActivity.getContentResolver(), theUri );
但是每次都会崩溃,
所以你这样做.........
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
AssetFileDescriptor fileDescriptor =null;
fileDescriptor =
State.mainActivity.getContentResolver().openAssetFileDescriptor( theUri, "r");
Bitmap actuallyUsableBitmap
= BitmapFactory.decodeFileDescriptor(
fileDescriptor.getFileDescriptor(), null, options);
Utils.Log("'4-sample' method bitmap ... "
+actuallyUsableBitmap.getWidth() +" "
+actuallyUsableBitmap.getHeight() );
这太棒了并且是可行的解决方案。
请注意,在当前条件下(2014 年)使用典型相机尺寸等情况下,“四”因素往往效果很好。但是,最好猜测或准确了解图像数据的大小theUri,然后使用该信息,智能地选择该因素。
简而言之,如何在加载 Uri 时正确选择比例因子?
Android专家,这是一个众所周知的问题,有解决办法吗?感谢您的 iOS->Android friend ! :)
最佳答案
参见 Android 指南 handling large bitmaps .
特别是这个部分:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
int imageHeight = options.outHeight;
int imageWidth = options.outWidth;
String imageType = options.outMimeType;
编辑
在您的情况下,您将替换 decodeResource
行:
BitmapFactory.decodeFileDescriptor(fileDescriptor.getFileDescriptor(), null, options);
关于android - 在缩放加载之前,根据实际 Uri 预估 Bitmap 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24135445/
各位站长在建站之前,是否有预估你网站行业的市场,是否有预估以后网站的流量、是否有预估你网站的收入情况,我相信大部分的站长都没有做过这些预估,包括我在内,在建立博客的时候也没有做预估,到如今只能摸石头
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 2 年前。 Improve
如果你有一个 Uri 并且你需要 Bitmap,理论上你可以这样做 Bitmap troublinglyLargeBmp = MediaStore.Images.Media.getBitmap(
我是一名优秀的程序员,十分优秀!