在我的应用程序中,我必须管理 Android 相机拍摄的大量图像。
问题是,当我有很多照片时,手机内存不足并且工作速度很慢。我希望仍然能够管理相同数量的图像,但没有内存问题
关于我应该做些什么来实现这一目标的任何建议?
在我的应用程序中,我必须管理 Android 相机拍摄的大量图像。
问题是,当我有很多照片时,手机内存不足并且工作速度很慢。我希望仍然能够管理相同数量的图像,但没有内存问题
关于我应该做些什么来实现这一目标的任何建议?
您应该解码缩放的图像。
您可以通过将 JPEG 扩展为已缩放以匹配目标视图大小的内存数组来减少使用的动态堆的数量。
以下示例方法演示了此技术:
private void setPic() {
// Get the dimensions of the View
int targetW = mImageView.getWidth();
int targetH = mImageView.getHeight();
// Get the dimensions of the bitmap
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
bmOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
int photoW = bmOptions.outWidth;
int photoH = bmOptions.outHeight;
// Determine how much to scale down the image
int scaleFactor = Math.min(photoW/targetW, photoH/targetH);
// Decode the image file into a Bitmap sized to fill the View
bmOptions.inJustDecodeBounds = false;
bmOptions.inSampleSize = scaleFactor;
bmOptions.inPurgeable = true;
Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath, bmOptions);
mImageView.setImageBitmap(bitmap);
}
在这里阅读更多。