Tôi đang tạo một ứng dụng Android và tôi cần tải một hình ảnh (bitmap) trong một cavas và thay đổi kích thước bằng cách sử dụng cử chỉ "thu nhỏ". Tuy nhiên, khi hình ảnh trên một kích thước nhất định, ứng dụng bị treo (ngoại lệ OutOfMemory). Làm cách nào để tối ưu hóa tải và thao tác của hình ảnh?Tải Android các ảnh bitmap lớn
Để tải hình ảnh tôi sử dụng:
BitmapFactory.decodeResource (ctx.getResources(), R.drawable.image)
Để vẽ nó:
imgCanvas.drawBitmap (image, posX, posY, null),
Để thay đổi kích thước của nó:
Bitmap.createScaledBitmap (originalBitmap, neww, NEWH, true);
ban đầu tôi tải hình ảnh với kích thước ban đầu của nó (với inSampleSize = 1). Khi tôi tạo "phóng to", tôi phải thay đổi inSampleSize bằng một giá trị> 1 và sau đó cắt hình ảnh? – Giammy
Trước khi người dùng phóng to, bạn tải toàn bộ hình ảnh của mình bằng inSampleSize> 1. Sau đó, khi người dùng phóng to, tại các điểm nhất định, bạn sẽ tải lại hình ảnh, nhưng chỉ một phần của nó và với inSampleSize có giá trị thấp hơn (nhưng vẫn còn hơn 1). Khi người dùng phóng to lại lần nữa, tại một số điểm, inSampleSize = 1 của bạn (và bạn sẽ chỉ tải phần hiển thị). –