图片压缩处理方法
2016-02-24 17:32
302 查看
/** * 图片压缩处理(质量法) * * @param image * @return */ private Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中 image.compress(Bitmap.CompressFormat.JPEG, 100, baos); int options = 100; // 循环判断如果压缩后图片是否大于100kb,大于继续压缩 while (baos.toByteArray().length / 1024 > 20) { // 重置baos即清空baos baos.reset(); // 每次都减少10 options -= 10; // 这里压缩options%,把压缩后的数据存放到baos中 image.compress(Bitmap.CompressFormat.JPEG, options, baos); } // 把压缩后的数据baos存放到ByteArrayInputStream中 ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray()); // 把ByteArrayInputStream数据生成图片 Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null); return bitmap; } /** * 图片压缩处理(尺寸法) * */ public Bitmap resizeBitmap(int width, int height, Bitmap bitmap) { // 图片尺寸 int bitmapWidth = bitmap.getWidth(); int bitmapHeight = bitmap.getHeight(); // 缩放图片的尺寸 float scaleWidth = (float) width / bitmapWidth; float scaleHeight = (float) height / bitmapHeight; Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); // 产生缩放后的Bitmap对象 Bitmap resizeBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmapWidth, bitmapHeight, matrix, false); return resizeBitmap; }
相关文章推荐
- 门户平台
- [LeetCode]Decode Ways
- JavaEE多语言功能实现
- linux定时任务crond那些事
- 查看oracle数据库全局数据库名和sid
- day5:Scala隐式转换和并发编程
- easyui学习
- iperf使用方法
- 效验手机号码正则表达式
- 隐藏APK在Launcher中的启动图标 android开发教程
- 企业门户平台解决方案
- 安装Android模拟器Genymotion【Android学习入门】
- lintcode-easy-Count and Say
- sublime 3103liense
- LCD时序中设计到的VSPW/VBPD/VFPD/HSPW/HBPD/HFPD总结
- JAVA正则表达式语法大全
- window.location.hash详解
- HttpSession 的作用
- 线条属性
- UGUI UI框架实现遇到的问题