如何将JPEG存储为字节[]以加快加载速度?

时间:2012-09-16 11:37:47

标签: android

我需要将~150个JPEG图像加载到ArrayList中以播放动画。

如果我像那样加载它们

ByteArrayOutputStream stream = new ByteArrayOutputStream();
BitmapFactory.decodeResource(getResources(), R.drawable.y1).compress(Bitmap.CompressFormat.JPEG, 80, stream);
byeArr.add( stream.toByteArray() );
对于150张图片,最多可能需要10秒钟,所以也许有办法加快速度?我可以以某种方式将这些图像存储在资源或资产中作为byte []或其他东西吗?

由于

1 个答案:

答案 0 :(得分:2)

您可以使用以下方法从资源中获取原始数据。您不需要解码然后再次压缩。

byte[] getBytesFromResource(final int res) {
    byte[] buffer = null;
    InputStream input = null;

    try {
        input = getResources().openRawResource(res);
        buffer = new byte[input.available()];
        if (input.read(buffer, 0, buffer.length) != buffer.length) {
            buffer = null;
        }
    } catch (IOException e) {
        buffer = null;
    } finally {
        if (input != null) {
            try {
                input.close();
            } catch (IOException e) {}
        }
    }

    return buffer;
}