如何在Android中将多个图像大小压缩到特定(100kb)大小?

时间:2016-03-02 12:43:54

标签: android

我是android新手。我想将位图的大小精确地减少到100kb。我从SD卡中获取一张图像,将其压缩并再次使用不同的名称将其保存到另一个目录中的SD卡中。压缩工作正常(3 mb像图像被压缩到大约100 kb)。我试图压缩1mb图像到100kb,但我得到的图像大小是20kb。但我需要1mb(或2mb(或)3mb(或)4mb(或)5mb .....)图像也调整到100kb。我的代码是,,

私有Bitmap getResizedBitmap(Bitmap bm,int maxSize)         {             int width = bm.getWidth();             int height = bm.getHeight();

        float bitmapRatio = (float)width / (float) height;
        if (bitmapRatio > 0) {
            width = maxSize;
            height = (int) (width / bitmapRatio);
        } else {
            height = maxSize;
            width = (int) (height * bitmapRatio);
        }
        return Bitmap.createScaledBitmap(bm, width, height, true);
    }

1 个答案:

答案 0 :(得分:0)

public static Bitmap getResizedBitmap(Bitmap bm, float newHeight, float newWidth) {

        float width = bm.getWidth();

        float height = bm.getHeight();

        float scaleWidth = (newWidth) / width;

        float scaleHeight = (newHeight) / height;

        // create a matrix for the manipulation

        Matrix matrix = new Matrix();

        // resize the bit map

        matrix.postScale(scaleWidth, scaleHeight);

        // recreate the new Bitmap

        return Bitmap.createBitmap(bm, 0, 0, (int) width, (int) height, matrix, false);

    }

使用矩阵

可以按像素分辨率调整位图大小,但根据其磁盘大小调整大小并不是我所知道的