Android下压缩图片的方法:

大概能将3M左右的图片压缩到100K左右, 几乎不失真。 代码如下:

import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.OutputStream;import android.graphics.Bitmap;import android.graphics.BitmapFactory;public class BitmapUtil {    /**     * 压缩图片之后保存为文件     *      * @param filePath     *            原始图片的完整路径     * @param storeImgPath     *            压缩之后要存储的图片的完整路径     * @return boolean     * @author Doraemon     * @time 2014年6月27日下午5:10:19     */    public static boolean saveCompressImg(String filePath, String storeImgPath) {        Bitmap bm = getSmallBitmap(filePath);        OutputStream stream = null;        try {            stream = new FileOutputStream(storeImgPath);        } catch (FileNotFoundException e) {            e.printStackTrace();        }        return bm.compress(Bitmap.CompressFormat.JPEG, 40, stream);    }    /**     * 根据路径获得突破并压缩返回bitmap用于显示     *      * @param imagesrc     * @return     */    private static Bitmap getSmallBitmap(String filePath) {        final BitmapFactory.Options options = new BitmapFactory.Options();        options.inJustDecodeBounds = true;        BitmapFactory.decodeFile(filePath, options);        // Calculate inSampleSize        options.inSampleSize = calculateInSampleSize(options, 480, 800);        // Decode bitmap with inSampleSize set        options.inJustDecodeBounds = false;        return BitmapFactory.decodeFile(filePath, options);    }    /**     * 计算图片的缩放值     *      * @param options     * @param reqWidth     * @param reqHeight     * @return     */    private static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {        // Raw height and width of image        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;    }}

更多相关文章

  1. android实现图片平铺效果&WebView多点触控实现缩放
  2. imageView的使用(进行原样的保持和按照比例的缩放:)
  3. android内部外部存储卡路径的获取
  4. 设置Android SDK tools工作路径环境变量
  5. 关于ImageView的一些图片属性
  6. android中加载大图片到内存
  7. Android 模拟器中AVD路径的修改(WIN7)
  8. katalon设置Android SDK路径
  9. Android根据文件路径使用File类获取文件相关信息

随机推荐

  1. Android的异步任务AsyncTask
  2. Android常用组件之四大天王
  3. 总结Content Provider的使用
  4. android 抛出“Unparsed aapt error(s)”
  5. Android中使用硬件加速的技巧
  6. Android(安卓)Lottie动画的简单使用
  7. Android(安卓)Selector 背景选择器
  8. Android处理异步耗时任务,AsyncTask使用教
  9. Gradle 构建 android 应用常见问题解决指
  10. Android(安卓)4.0 SDK 环境搭建体验(Windo