Android 有没有办法提高BitmapFactory.decodeStream()的速度?

Android 有没有办法提高BitmapFactory.decodeStream()的速度?,android,Android,显然,这是一个昂贵/耗时的操作。有什么办法可以改进吗 Bitmap bm = BitmapFactory.decodeStream((InputStream) new URL( someUrl).getContent()); 我猜真的没有办法避免这种相对激烈的操作,但我想看看是否有人有任何他们可以推荐的调整(除了缓存实际位图,不管出于什么原因,它在这里根本不相关)如果你不需要全分辨率,你可以让它只读取第n个

显然,这是一个昂贵/耗时的操作。有什么办法可以改进吗

Bitmap bm = BitmapFactory.decodeStream((InputStream) new URL(
                                            someUrl).getContent());

我猜真的没有办法避免这种相对激烈的操作,但我想看看是否有人有任何他们可以推荐的调整(除了缓存实际位图,不管出于什么原因,它在这里根本不相关)

如果你不需要全分辨率,你可以让它只读取第n个像素,其中n是2的幂。通过在传递给
BitmapFactory.decodeFile
的对象上设置
inSampleSize
,可以实现此目的。通过在
Options
对象上设置
inJustDecodeBounds
,只需第一次读取文件中的元数据,就可以找到样本大小。除此之外——不,我不认为有一种简单的方法可以比现在更快

编辑,例如:

    Options opts = new Options();
    // Get bitmap dimensions before reading...
    opts.inJustDecodeBounds = true;
    BitmapFactory.decodeFile(path, opts);
    int width = opts.outWidth;
    int height = opts.outHeight;
    int largerSide = Math.max(width, height);
    opts.inJustDecodeBounds = false; // This time it's for real!
    int sampleSize = ??; // Calculate your sampleSize here
    opts.inSampleSize = sampleSize;
    Bitmap bmp = BitmapFactory.decodeFile(path, opts);

谢谢!您能否详细说明一下“您可以通过在Options对象上设置inJustDecodeBounds来在第一次通过时读取文件中的元数据,从而找到样本大小”这一点?也许有一个例子?我添加了一个代码例子。如果样本大小为2,则宽度和高度将减半。如果它是4,那么它将是第四个,以此类推。结果是:(大部分来自费多尔弗拉索夫。懒汉)