搜索
首页 电子数码 手机/通讯 手机使用

android 上传本地图库照片怎么调用压缩方法

android 上传本地图库照片怎么调用压缩方法

全部回答

2017-11-03

44 0
    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 。  。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电子数码
手机使用
手机/通讯
MP4/MP3
照相机/摄像机
手机/通讯
手机使用
手机购买
通讯服务
手机使用
手机使用
举报
举报原因(必选):
取消确定举报