1

似乎有几种不同的方法可以从手机的存储中获取位图。

我正在使用 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 过程更快地完成,而不是从全尺寸图像创建缩放位图。有没有最好的方法或者这种差异完全可以忽略不计?

4

1 回答 1

1

我不是专家,但我认为两者之间的差异可以忽略不计,考虑到无论哪种方式你都在创建一个缩放的图像。似乎唯一的区别是从缩略图缩放与从位图缩放所需的时间,无论哪种方式,我认为您都在谈论纳秒。

老实说,您似乎只想将#1用于内存使用,而不是从全尺寸图像加载然后向下采样,而是从缩略图加载它并在必要时调整大小。

于 2013-07-23T22:00:48.390 回答