首页 > 代码库 > Android 下压缩图片—微弱失真
Android 下压缩图片—微弱失真
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; }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。