2013-05-31 63 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; 

} 

回答

相关问题