图片压缩到指定尺寸和大小
来源:互联网 发布:告白气球 知乎 编辑:程序博客网 时间:2024/05/21 09:21
第一步:
/** * 对上次的图片进行压缩,压缩在100kb以内 * * @param image * @return */ 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 image.compress(Bitmap.CompressFormat. JPEG, options, baos);//这里压缩options%,把压缩后的数据存放到 baos中 options -= 10; //每次都减少10 } ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());//把压缩后的数据 baos存放到ByteArrayInputStream中 Bitmap bitmap = BitmapFactory. decodeStream(isBm, null, null);//把ByteArrayInputStream数据生成图片 return bitmap; }
/** * 缩放图片到指定尺寸 * @param image * @return */ private Bitmap comp(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat. JPEG, 100, baos); if( baos.toByteArray().length / 1024>512) {//判断如果图片大于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 < h && h > hh) {//如果高度高的话根据宽度固定大小缩放 be = ( int) (newOpts.outHeight / hh); } if (be <= 0) be = 1; newOpts. inSampleSize = be;//设置缩放比例 //重新读入图片,注意此时已经把options.inJustDecodeBounds 设回false了 isBm = new ByteArrayInputStream(baos.toByteArray()); bitmap = BitmapFactory. decodeStream(isBm, null, newOpts); return compressImage(bitmap);//压缩好比例大小后再进行质量压缩 }
第二步:
Bitmap bitmap=comp(bitmap);//为压缩后的图片
0 0
- 图片压缩到指定尺寸和大小
- 图片压缩的两种形式(压缩到指定尺寸和压缩到指定大小)
- swift如何压缩图片到指定大小以内,尺寸和体积双压缩
- 图片压缩到规定大小和规定尺寸之内
- 压缩图片到指定大小
- //图片压缩到指定大小
- android压缩图片到指定尺寸
- iOS 图片等比压缩到指定尺寸
- UIImage图片缩放到指定大小尺寸
- iphone 压缩图片到指定的大小
- Bitmap图片压缩到指定字节大小
- IOS 压缩图片到指定大小kb
- iOS小demo之将图片压缩到指定尺寸
- ios uiimage图片缩放到指定大小尺寸
- 图片压缩指定大小
- 三种Android图片压缩方法 压缩到指定大小
- 三种Android图片压缩方法 压缩到指定大小
- 有关于图片压缩大小--尺寸裁剪 和 压缩系数
- 浅析java反射机制
- rocketmq入门环境搭建
- MyISAM和InnoDB索引实现对比
- 【Python】设置pip install 软件源
- keypress事件的问题
- 图片压缩到指定尺寸和大小
- 对窗口过程函数WndProc()的一点理解
- java基础学习(一)
- 蓝桥杯——最大的算式——DP
- 提交按钮Input 的type值为submit的时候 ,要求弹出二次确认窗口
- Tomcat启动报错,ClassNotFoundException
- Java中Comparable和Comparator区别小结
- 1074. Reversing Linked List
- queue.h之tailq.h尾队列理解使用