我需要将~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 []或其他东西吗?
由于
答案 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;
}