0

我需要将大约 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 秒,所以也许有办法加快速度?我可以以某种方式将这些图像存储在资源或资产中已经作为字节 [] 或其他东西吗?

谢谢

4

1 回答 1

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;
}
于 2012-09-16T11:38:37.660 回答