2013-05-31 8 views
0

У меня есть изображение. Я хочу сжать его, не теряя качества. Как мне это сделать? Пожалуйста, может кто-нибудь мне помочь? Я использую ниже код для сжатия изображения.Как сжать изображение без потери качества в Android?

bitmap = decodeSampledBitmapFromResource(getResources(), strSignaturePath, 150, 30); 
public static Bitmap decodeSampledBitmapFromResource(Resources res, 
     String imagepath, int reqWidth, int reqHeight) { 
    // First decode with inJustDecodeBounds=true to check dimensions 
    final BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(imagepath, options); 
    // BitmapFactory.decodeResource(res, imagepath, options); 

    // Calculate inSampleSize 
    options.inSampleSize = calculateInSampleSize(options, reqWidth, 
      reqHeight); 

    // Decode bitmap with inSampleSize set 
    options.inJustDecodeBounds = false; 
    return BitmapFactory.decodeFile(imagepath, options); 
} 

private static int calculateInSampleSize(Options options, int reqWidth, 
     int reqHeight) { 
    final int height = options.outHeight; 
    final int width = options.outWidth; 
    int inSampleSize = 1; 

    if (height > reqHeight || width > reqWidth) { 

     // Calculate ratios of height and width to requested height and 
     // width 
     final int heightRatio = Math.round((float) height 
       /(float) reqHeight); 
     final int widthRatio = Math.round((float) width/(float) reqWidth); 

     // Choose the smallest ratio as inSampleSize value, this will 
     // guarantee 
     // a final image with both dimensions larger than or equal to the 
     // requested height and width. 
     inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio; 
    } 

    return inSampleSize; 

} 

ответ

Смежные вопросы