似乎有几种不同的方法可以从手机存储中获取位图。
我正在使用MediaStore查询从所有图像中读取数据,并将路径和imageId保存在内存中。然后,如果我想上传图片的小缩略图,我可以:
1)根据图片ID查询mediastore中的微/迷你缩略图,然后根据我的确切需要创建一个缩放的位图(如果micro / mini的大小不正确)
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因为我认为缩略图生成会很快从mediastore中生成,这会使createScaledBitmap过程更快完成,而不是从fullsize图像创建缩放位图。有没有最好的方法,或者这种差异完全可以忽略不计?
答案 0 :(得分:1)
我不是专家,但我认为两者之间的差异可以忽略不计,考虑到你创建缩放图像的方式。似乎唯一的区别是从缩略图到比例缩放比例所需的时间,无论哪种方式,我认为你在谈论纳秒。
老实说,似乎你只想将#1用于内存使用,而不是从全尺寸图像加载然后向下采样,你将从缩略图中加载它并在必要时调整大小。