压缩文件的Demo,直接拿来用
来源:互联网 发布:ug编程实例教程ppt 编辑:程序博客网 时间:2024/05/21 06:35
public void compress(String srcPath) { DisplayMetrics dm; dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); float hh = dm.heightPixels; float ww = dm.widthPixels; BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true; Bitmap bitmap = BitmapFactory.decodeFile(srcPath, opts); opts.inJustDecodeBounds = false; int w = opts.outWidth; int h = opts.outHeight; int size = 0; if (w <= ww && h <= hh) { size = 1; } else { double scale = w >= h ? w / ww : h / hh; double log = Math.log(scale) / Math.log(2); double logCeil = Math.ceil(log); size = (int) Math.pow(2, logCeil); } opts.inSampleSize = size; bitmap = BitmapFactory.decodeFile(srcPath, opts); ByteArrayOutputStream baos = new ByteArrayOutputStream(); int quality = 100; bitmap.compress(Bitmap.CompressFormat.JPEG, quality, baos); System.out.println(baos.toByteArray().length); while (baos.toByteArray().length > 45 * 1024) { baos.reset(); bitmap.compress(Bitmap.CompressFormat.JPEG, quality, baos); quality -= 20; System.out.println(baos.toByteArray().length); } try { baos.writeTo(new FileOutputStream(srcPath)); } catch (Exception e) { e.printStackTrace(); } finally { try { baos.flush(); baos.close(); } catch (IOException e) { e.printStackTrace(); } } }
阅读全文
0 0
- 压缩文件的Demo,直接拿来用
- 直接拿来用的前端技术
- 直接拿来用的JS技巧
- 直接拿来用,BaseActivity的常用功能的抽取
- 在IM中拿来就用的录音Demo
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目 !
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- 直接拿来用!最火的Android开源项目
- kettle7.0+ 创建资源库
- GoosBean
- 字数的隐藏和展开
- html write music player
- Lombok原理简介
- 压缩文件的Demo,直接拿来用
- Android 项目上传到SVN 操作步骤(两种方式)
- 软件学习25字真言
- easyui中将Table中的row数据自动注入表单
- C语言指针的初始化和赋值
- WPF 窗口去除顶部边框(正宗无边框)
- Scala-trait
- 三道经典C语言题(6)
- 17、责任链模式(Chain of Responsibility)