簡體   English   中英

壓縮圖像后甚至出現內存不足錯誤

[英]Out of memory error even after compressing the image

這是我的代碼請檢查並解決我的問題。 在這個通過圖像路徑獲取圖像,即我在selectimage1selectimage2 ...繼續,然后我已經采取了位圖中的圖像,然后解碼並減少其大小den也出現內存錯誤。

所以請幫我擺脫它。

謝謝

    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"

試試看:

imageview1.setImageBitmap(null);
imageview2.setImageBitmap(null);
imageview3.setImageBitmap(null);
imageview4.setImageBitmap(null);
imageview1.setImageBitmap(thumbnail1);
imageview2.setImageBitmap(thumbnail2);
imageview3.setImageBitmap(bitmapsimplesize3);
imageview4.setImageBitmap(bitmapsimplesize4);

finish(); 以前無法使用的活動。

要么

AndroidManifest.xml中

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:theme="@style/AppTheme" >

嘗試縮小Bitmap而不是壓縮它。 官方Android網站有一個非常詳細的指南: http//developer.android.com/training/displaying-bitmaps/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM