我有7个小图像按钮。我希望当您单击一个时,您可以从图库中选择一张图片并将其显示在按钮上。问题是来自相机的4.5 Mb等大图片,我添加的每张图片需要50 Mb ram,而在第3张图片上它会与outOfMemory崩溃。当我删除按钮上的setImage
时,我只保存我的图片以供日后使用。
private void setPicture(ImageButton button, Intent data){
Uri imageUrl = data.getData();
InputStream inputStream = null;
ByteArrayOutputStream stream = null;
try {
inputStream = getContentResolver().openInputStream(imageUrl);
Bitmap image = BitmapFactory.decodeStream(inputStream);
Drawable drawable = new BitmapDrawable(getResources(), image);
stream = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG, 100, stream);
pictures.add(stream.toByteArray());
//button.setImageDrawable(drawable);
答案 0 :(得分:1)
你应该避免在内存中保留完整的大位图只是为了在按钮上显示一小部分样本 - 而是加载一个缩减采样的版本。
您应该查看此官方Android指南:
有效加载大位图
http://developer.android.com/training/displaying-bitmaps/load-bitmap.html