android 上传本地图库照片怎么调用压缩方法
android图片压缩的3种方法实例 第一:质量压缩法: private Bitmap compressImage(Bitmap image) { ? ? ? ?ByteArrayOutputStream baos = new ByteArrayOutputStream(); ? ? ? ?image。 compress(Bitmap。CompressFormat。JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中 ? ? ? ?int options = 100; ? ? ? ?while ( baos。 toByteArr...全部
android图片压缩的3种方法实例 第一:质量压缩法: private Bitmap compressImage(Bitmap image) { ? ? ? ?ByteArrayOutputStream baos = new ByteArrayOutputStream(); ? ? ? ?image。
compress(Bitmap。CompressFormat。JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中 ? ? ? ?int options = 100; ? ? ? ?while ( baos。
toByteArray()。length / 1024>100) { ? ?//循环判断如果压缩后图片是否大于100kb,大于继续压缩 ? ? ? ? ? ? ? ? ? ?baos。reset();//重置baos即清空baos ? ? ? ? ? ?options -= 10;//每次都减少10 ? ? ? ? ? ?image。
compress(Bitmap。CompressFormat。JPEG, options, baos);//这里压缩options%,把压缩后的数据存放到baos中 ? ? ? ?} ? ? ? ?ByteArrayInputStream isBm = new ByteArrayInputStream(baos。
toByteArray());//把压缩后的数据baos存放到ByteArrayInputStream中 ? ? ? ?Bitmap bitmap = BitmapFactory。decodeStream(isBm, null, null);//把ByteArrayInputStream数据生成图片 ? ? ? ?return bitmap; ? ?} 第二:图片按比例大小压缩方法(根据路径获取图片并压缩): private Bitmap getimage(String srcPath) { ? ? ? ?BitmapFactory。
Options newOpts = new BitmapFactory。Options(); ? ? ? ?//开始读入图片,此时把options。inJustDecodeBounds 设回true了 ? ? ? ?newOpts。
inJustDecodeBounds = true; ? ? ? ?Bitmap bitmap = BitmapFactory。decodeFile(srcPath,newOpts);//此时返回bm为空 ? ? ? ?newOpts。
inJustDecodeBounds = false; ? ? ? ?int w = newOpts。outWidth; ? ? ? ?int h = newOpts。outHeight; ? ? ? ?//现在主流手机比较多是800*480分辨率,所以高和宽我们设置为 ? ? ? ?float hh = 800f;//这里设置高度为800f ? ? ? ?float ww = 480f;//这里设置宽度为480f ? ? ? ?//缩放比。
由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可 ? ? ? ?int be = 1;//be=1表示不缩放 ? ? ? ?if (w > h && w > ww) {//如果宽度大的话根据宽度固定大小缩放 ? ? ? ? ? ?be = (int) (newOpts。
outWidth / ww); ? ? ? ?} else if (w hh) {//如果高度高的话根据宽度固定大小缩放 ? ? ? ? ? ?be = (int) (newOpts。outHeight / hh); ? ? ? ?} ? ? ? ?if (be 1024) {//判断如果图片大于1M,进行压缩避免在生成图片(BitmapFactory。
decodeStream)时溢出 ? ? ? ? ? ? ? ?baos。reset();//重置baos即清空baos ? ? ? ? ? ?image。compress(Bitmap。
CompressFormat。JPEG, 50, baos);//这里压缩50%,把压缩后的数据存放到baos中 ? ? ? ?} ? ? ? ?ByteArrayInputStream isBm = new ByteArrayInputStream(baos。
toByteArray()); ? ? ? ?BitmapFactory。Options newOpts = new BitmapFactory。Options(); ? ? ? ?//开始读入图片,此时把options。
inJustDecodeBounds 设回true了 ? ? ? ?newOpts。inJustDecodeBounds = true; ? ? ? ?Bitmap bitmap = BitmapFactory。
decodeStream(isBm, null, newOpts); ? ? ? ?newOpts。inJustDecodeBounds = false; ? ? ? ?int w = newOpts。
outWidth; ? ? ? ?int h = newOpts。outHeight; ? ? ? ?//现在主流手机比较多是800*480分辨率,所以高和宽我们设置为 ? ? ? ?float hh = 800f;//这里设置高度为800f ? ? ? ?float ww = 480f;//这里设置宽度为480f ? ? ? ?//缩放比。
由于是固定比例缩放,只用高或者宽其中一个数据进行计算即可 ? ? ? ?int be = 1;//be=1表示不缩放 ? ? ? ?if (w > h && w > ww) {//如果宽度大的话根据宽度固定大小缩放 ? ? ? ? ? ?be = (int) (newOpts。
outWidth / ww); ? ? ? ?} else if (w hh) {//如果高度高的话根据宽度固定大小缩放 ? ? ? ? ? ?be = (int) (newOpts。outHeight / hh); ? ? ? ?} ? ? ? ?if (be 。
收起