Я разрабатываю игру для Android, состоящую из множества изображений в виде спрайтов.
Когда я загружаю изображения следующим образом:
public static Bitmap loadBitmap(int resId) {
return BitmapFactory.decodeResource(getResources(), resId, options);
}
все отлично работает.
Когда я пытаюсь уменьшить или увеличить растровое изображение с помощью этого кода:
public static Bitmap loadBitmap(int resId) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resId, options);
Matrix matrix = new Matrix();
matrix.postScale(0.8f, 0.8f);
Bitmap scaledBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
bitmap.recycle();
bitmap = null;
return scaledBitmap;
}
приложение вылетает со следующим исключением:
2211840-byte external allocation too large for this process.
Out of memory: Heap Size=4935KB, Allocated=2549KB, Bitmap Size=18463KB
VM won't let us allocate 2211840 bytes
Почему масштабирование вызывает исключение OutOfMemory? Я даже пытаюсь переработать исходное изображение, чтобы сэкономить место. Я не использую Bitmap.createScaledBitmap(...)
намеренно, так как этот метод вызывает внутреннюю утечку памяти (как объяснено в других сетевых ресурсах).
Заранее спасибо,
Златко