[英]Out of memory error even after compressing the image
Here is my code please check and resolve my problem . 这是我的代码请检查并解决我的问题。 In this im getting image through image path ie i'm taking that in
selectimage1
, selectimage2
...goes on and after that i have taken the image in Bitmap and then decode and reduce its size den also getting out of memory error . 在这个通过图像路径获取图像,即我在
selectimage1
, selectimage2
...继续,然后我已经采取了位图中的图像,然后解码并减少其大小den也出现内存错误。
so please help me to get out of it. 所以请帮我摆脱它。
thanks 谢谢
location=(TextView) findViewById(R.id.location);
category=(TextView) findViewById(R.id.category);
subcategory=(TextView) findViewById(R.id.subcategory);
title=(EditText) findViewById(R.id.title);
description=(EditText) findViewById(R.id.description);
phonenumber=(EditText) findViewById(R.id.phonenumber);
email=(EditText) findViewById(R.id.email);
price=(EditText) findViewById(R.id.price);
postadd=(Button) findViewById(R.id.button_post);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
locationname = preferences.getString("Location", "Location");
SharedPreferences preferences1 = PreferenceManager.getDefaultSharedPreferences(this);
categoryname = preferences1.getString("categoryname", "categoryname");
SharedPreferences imagepath1 = PreferenceManager.getDefaultSharedPreferences(this);
selectedImagePath1 = imagepath1.getString("picturePath1", "picturePath1");
SharedPreferences imagepath2 = PreferenceManager.getDefaultSharedPreferences(this);
selectedImagePath2 = imagepath2.getString("picturePath2", "picturePath2");
SharedPreferences imagepath3 = PreferenceManager.getDefaultSharedPreferences(this);
selectedImagePath3 = imagepath3.getString("picturePath3", "picturePath3");
SharedPreferences imagepath4 = PreferenceManager.getDefaultSharedPreferences(this);
selectedImagePath4 = imagepath4.getString("picturePath4", "picturePath4");
Bitmap thumbnail1 = (BitmapFactory.decodeFile(selectedImagePath1));
ByteArrayOutputStream stream = new ByteArrayOutputStream();
thumbnail1.compress(Bitmap.CompressFormat.JPEG, 30, stream);
Bitmap thumbnail2 = (BitmapFactory.decodeFile(selectedImagePath2));
ByteArrayOutputStream stream1 = new ByteArrayOutputStream();
thumbnail2.compress(Bitmap.CompressFormat.JPEG, 30, stream1);
Bitmap thumbnail3 = (BitmapFactory.decodeFile(selectedImagePath3));
int size3 = 10;
Bitmap bitmapsimplesize3 = Bitmap.createScaledBitmap(thumbnail3 ,thumbnail3.getWidth() / size3, thumbnail3.getHeight() / size3, true);
Bitmap thumbnail4 = (BitmapFactory.decodeFile(selectedImagePath4));
int size4 = 10;
Bitmap bitmapsimplesize4 = Bitmap.createScaledBitmap(thumbnail4 ,thumbnail4.getWidth() / size4, thumbnail4.getHeight() / size4, true);
imageview1.setImageBitmap(thumbnail1);
imageview2.setImageBitmap(thumbnail2);
imageview3.setImageBitmap(bitmapsimplesize3);
imageview4.setImageBitmap(bitmapsimplesize4);
location.setText(locationname);
category.setText(categoryname);
subcategory.setText(subcategoryname);
subcategory.setVisibility(View.VISIBLE);
您只需将此行添加到清单文件中....它将为您的应用程序分配大内存。
android:largeHeap="true"
Try That: 试试看:
imageview1.setImageBitmap(null);
imageview2.setImageBitmap(null);
imageview3.setImageBitmap(null);
imageview4.setImageBitmap(null);
imageview1.setImageBitmap(thumbnail1);
imageview2.setImageBitmap(thumbnail2);
imageview3.setImageBitmap(bitmapsimplesize3);
imageview4.setImageBitmap(bitmapsimplesize4);
and also finish();
并
finish();
previous unusable activities. 以前无法使用的活动。
Or 要么
AndroidManifest.xml AndroidManifest.xml中
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/AppTheme" >
Try scaling down the Bitmap instead of compressing it. 尝试缩小Bitmap而不是压缩它。 The official Android website has a very detailed guide for this: http://developer.android.com/training/displaying-bitmaps/
官方Android网站有一个非常详细的指南: http : //developer.android.com/training/displaying-bitmaps/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.