2014-12-09 3 views
0

, когда я называюAndroid: Сжатие растрового изображения с небольшим количеством злоупотреблений барана

BitmapFactory.decodeFile(filepath); 

У меня есть аут ошибки памяти, потому что файл слишком велик. Как сжать этот файл без злоупотребления RAM и без его масштабирования? Пожалуйста, помогите мне = (

это то, что я мог бы сделать сейчас (я нашел этот код здесь на стеке)

bm = BitmapFactory.decodeFile(filepath); 
    File compressedFilePicture; 
    try { 
     compressedFilePicture = createImageFile(); 
     FileOutputStream fOut = new FileOutputStream(compressedFilePicture); 
     bm.compress(CompressFormat.JPEG, COMPRESS_VALUE, fOut); 
     new File(filepath).delete(); 
     filepath = compressedFilePicture.getAbsolutePath(); 
     bm = BitmapFactory.decodeFile(filepath); 
     imageview.setImageBitmap(bm); 
     sc.string = filepath; 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

нужно загрузить растровое изображение на таран ломтиком время .. любой идея

ответ

0
bm = BitmapFactory.decodeFile(filepath); 
    File compressedFilePicture; 
    try { 
     compressedFilePicture = createImageFile(); 
     FileOutputStream fOut = new FileOutputStream(compressedFilePicture); 
     bm.compress(CompressFormat.JPEG, COMPRESS_VALUE, fOut); 
     new File(filepath).delete(); 
     filepath = compressedFilePicture.getAbsolutePath(); 
BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 4; //u can use 2/4/8/16....ect 
Uri uri = getImageUri(filepath);  
InputStream in = in = contentResolver.openInputStream(uri); 

bm = BitmapFactory.decodeStream(in, null, options); 
     imageview.setImageBitmap(bm); 
     sc.string = filepath; 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
Смежные вопросы