標籤:test encode attribute read oat span phi 拍照 res
package test.yc.com.fragmentdemo;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.media.ExifInterface;import android.util.Base64;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/** * Created by uctimes on 2016/10/22. */public class BitMapUtils { //計算圖片的縮放值 public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int heightRatio = Math.round((float) height/ (float) reqHeight); final int widthRatio = Math.round((float) width / (float) reqWidth); inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio; } return inSampleSize; } // 根據路徑獲得圖片並壓縮,返回bitmap用於顯示 public 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); } //把bitmap轉換成String public static String bitmapToString(String filePath) { Bitmap bm = getSmallBitmap(filePath); ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.JPEG, 40, baos); byte[] b = baos.toByteArray(); return Base64.encodeToString(b, Base64.DEFAULT); }// /*//壓縮圖片,處理某些手機拍照角度旋轉的問題//*/// public static String compressImage(Context context, String filePath, String fileName, int q) throws FileNotFoundException {//// Bitmap bm = getSmallBitmap(filePath);//// int degree = readPictureDegree(filePath);//// if(degree!=0){//旋轉照片角度// bm=rotateBitmap(bm,degree);// }//// File imageDir = SDCardUtils.getImageDir(context);//// File outputFile=new File(imageDir,fileName);//// FileOutputStream out = new FileOutputStream(outputFile);//// bm.compress(Bitmap.CompressFormat.JPEG, q, out);//// return outputFile.getPath();// }//// //判斷照片角度// public static int readPictureDegree(String path) {// int degree = 0;// try {// ExifInterface exifInterface = new ExifInterface(path);// int orientation = exifInterface.getAttributeInt(// ExifInterface.TAG_ORIENTATION,// ExifInterface.ORIENTATION_NORMAL);// switch (orientation) {// case ExifInterface.ORIENTATION_ROTATE_90:// degree = 90;// break;// case ExifInterface.ORIENTATION_ROTATE_180:// degree = 180;// break;// case ExifInterface.ORIENTATION_ROTATE_270:// degree = 270;// break;// }// } catch (IOException e) {// e.printStackTrace();// }// return degree;// }////旋轉照片// public static Bitmap rotateBitmap(Bitmap bitmap,int degress) {// if (bitmap != null) {// Matrix m = new Matrix();// m.postRotate(degress);// bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),// bitmap.getHeight(), m, true);// return bitmap;// }// return bitmap;// }}
網上找的挺不錯的圖片壓縮代碼