图片压缩

package com.shaodianbao.util;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.media.ExifInterface;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

/**
 * Created by Administrator on 2017/4/7 0007.
 * 对图片的处理
 */

public class ImageUtil {


    /**
     * 图片的压缩(尺寸压缩和质量压缩)
     *
     * @param srcPath   源文件的路径
     * @param desPath   压缩后的保存路径
     * @param maxWidth  最大的高度
     * @param maxHeight 最大的宽度
     * @param quality   不压缩百分比(quality表示不压缩的量 100表示不压缩)
     * @throws IOException
     */
    public static void compressPicture(String srcPath, String desPath, int maxWidth, int maxHeight, int quality) {
        try {
            BitmapFactory.Options opts = new BitmapFactory.Options();
            //开始读入图片,此时把options.inJustDecodeBounds 设回true            opts.inJustDecodeBounds = true;
            BitmapFactory.decodeFile(srcPath, opts);
            int w = opts.outWidth;
            int h = opts.outHeight;
            int inSampleSize = 1;
            if (w > h && w > maxWidth) {
                inSampleSize = w / maxWidth;
            } else if (w < h && h > maxHeight) {
                inSampleSize = h / maxHeight;
            }
            opts.inSampleSize = inSampleSize;
            opts.inJustDecodeBounds = false;
            Bitmap bm = BitmapFactory.decodeFile(srcPath, opts);
            OutputStream out = new FileOutputStream(desPath);
            bm.compress(Bitmap.CompressFormat.JPEG, quality, out);
            out.close();
            bm.recycle();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    /**
     * 缩放图片
     *
     * @param srcPath   原路径
     * @param desPath   缩放后的保存路径
     * @param newWidth  缩放后的宽度
     * @param newHeight 缩放后的高度
     */
    public static void zoomImage(String srcPath, String desPath, int newWidth, int newHeight) {
        try {
            Bitmap bitmap = BitmapFactory.decodeFile(srcPath);
            //获取这个图片的宽和高
            float width = bitmap.getWidth();
            float height = bitmap.getHeight();
            //计算宽高缩放率
            float scaleWidth = newWidth / width;
            float scaleHeight = newHeight / height;
            //创建操作图片用的matrix
            Matrix matrix = new Matrix();
            //缩放图片动作
            matrix.postScale(scaleWidth, scaleHeight);
            Bitmap bm = Bitmap.createBitmap(bitmap, 0, 0, (int) width, (int) height, matrix, true);
            FileOutputStream out = new FileOutputStream(desPath);
            bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }


}

你可能感兴趣的:(Android,Android,工具)