似乎有几种不同的方法可以从手机的存储中获取位图。
我正在使用MediaStore查询从所有图像读取数据,并将路径和imageId都保存在内存中。然后,如果我想上传图像的小缩略图,则可以:
1)根据图像ID向媒体存储区查询微型/微型缩略图,然后从中创建缩放的位图以适合我的确切需求(如果微型/微型尺寸不正确)
Bitmap bm = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(), imageId, MediaStore.Images.Thumbnails.MINI_KIND, null);
Bitmap.createScaledBitmap(bm, (int)newWidth, (int)newHeight, true);
要么
2)从文件位置获取位图,然后从该位置创建缩放的位图
Bitmap bitmap = BitmapFactory.decodeFile(url);
Bitmap.createScaledBitmap(bitmap, (int)newWidth, (int)newHeight, true);
我最初是做#1的原因,因为我认为从媒体存储库中生成缩略图会很快,这将使createScaledBitmap进程更快地完成,而不是从全尺寸图像中创建缩放的位图。有没有最好的方法,或者这种区别可以完全忽略不计?
最佳答案
我不是专家,但考虑到您创建缩放图像的任何一种方式,我认为两者之间的差异可以忽略不计。似乎唯一的区别是从缩略图进行缩放与从位图进行缩放所需的时间,以及我认为您所说的纳秒都是这样。
坦白地说,您似乎只想将#1用于内存使用,而不是从完整大小的图像加载然后进行下采样,而是从缩略图中加载它,并在必要时进行缩放。