1

我有 3 或 4 个用于加载图像的图像路径,因此我将其设置为 imageview。为什么需要很长时间?或者更好地问有没有办法让它更快?在一天结束时,我正在加载以适应高度和宽度小于 60 dp 的图像视图

Uri mainImgeUri = Uri.parse(imagePath);
InputStream imageStream;
try {
    imageStream = mActiviy.getContentResolver().openInputStream(mainImgeUri);
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 8;
    Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream, null, options);
    mainImageIV.setImageBitmap(yourSelectedImage);
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

用例:发生的情况是用户将添加 5 张图像(他可以从主要由手机相机拍摄的图库中选择它们)。他点击保存,我的应用程序将它们的路径存储在 sqlite 数据库中。然后,当用户再次打开应用程序以查看它们时,我的应用程序查询数据库以获取所有图像的路径并执行 x 次以上的代码,以便所有图像视图都加载了预期的图像

4

1 回答 1

0

看看http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

它解释了如何根据输出图像的所需尺寸计算正确的 inSampleSize。它还解释了如何引用大型位图,而无需将其所有像素数据加载到内存中。

这个想法是您重新采样较大的图像,并且只将较小的图像加载到内存中,从而使整个过程更加高效。示例代码正在从资源中访问位图,但这可以很容易地根据您的需要进行修改。

在示例中要注意的重要事项是 inJustDecodeBounds 和 calculateInSampleSize。

于 2013-02-28T10:11:56.827 回答