我有一个应用程序需要向用户展示很多图片,但我们一直收到很多OutOfMemoryError
异常的错误报告。
目前我们的做法是这样的:
// Check if image is a landscape image
if (bmp.getWidth() > bmp.getHeight()) {
// Rotate it to show as a landscape
Matrix m = image.getImageMatrix();
m.postRotate(90);
bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m, true);
}
image.setImageBitmap(bmp);
显而易见的问题是,我们必须从内存中的图像重新创建位图并旋转矩阵,这对于内存来说相当昂贵。
我的问题很简单:
有没有更好的方法旋转图像而不会引起OutOfMemoryError
?
Bitmap.createBitmap
中,有可能超出虚拟机允许的内存限制,从而引发错误。 - Draiken