Bitmap 实现对图片压缩的方法

// 根据路径获得图片并压缩,返回bitmap用于显示
    public static Bitmap getSmallBitmap(String filePath) {//图片所在SD卡的路径
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(filePath, options);
        options.inSampleSize = calculateInSampleSize(options, 480, 800);//自定义一个宽和高
        options.inJustDecodeBounds = false;
        return BitmapFactory.decodeFile(filePath, options);
     }
                       
    //计算图片的缩放值
    public static int calculateInSampleSize(BitmapFactory.Options options,int reqWidth, int reqHeight) {
        final int height = options.outHeight;//获取图片的高
        final int width = options.outWidth;//获取图片的框
        int inSampleSize = 4;
        if (height > reqHeight || width > reqWidth) {
             final int heightRatio = Math.round((float) height/ (float) reqHeight);
             final int widthRatio = Math.round((float) width / (float) reqWidth);
             inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
        }
        return inSampleSize;//求出缩放值
    }

//根据路径获取用户选择的图片
    public  static Bitmap getImage(String imgPath){
        BitmapFactory.Options options=new BitmapFactory.Options();
        options.inSampleSize=2;//直接设置它的压缩率,表示1/2
        Bitmap b=null;
        try {
            b=BitmapFactory.decodeFile(imgPath, options);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return b;
    }

//将Bitmap转换成Base64
    public static String getImgStr(Bitmap bit){
       ByteArrayOutputStream bos=new ByteArrayOutputStream();
       bit.compress(CompressFormat.JPEG, 40, bos);//参数100表示不压缩
       byte[] bytes=bos.toByteArray();
       return Base64.encodeToString(bytes, Base64.DEFAULT);
    }
//将Base64转换成bitmap
     public static Bitmap getimg(String str){
         byte[] bytes;
         bytes=Base64.decode(str, 0);
         return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
     }


知识共享许可协议
《Bitmap 实现对图片压缩的方法》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     147.71ms