将位图压缩为50kb

时间:2017-12-25 07:09:00

标签: android image bitmap

我需要构建一个应用程序来拍照或从库中选择一个图像,我需要将它发送到50kb大小的服务器。

到目前为止,我只找到一个代码,您可以在其中调整位图的宽度和高度,但由于它,位图会失去质量。

public Bitmap getResizedBitmap(Bitmap image, int maxSize) {
    int width = image.getWidth();
    int height = image.getHeight();

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    int options = 100;
    while ( baos.toByteArray().length > 1024*50) { 
        baos.reset();
        image.compress(Bitmap.CompressFormat.JPEG, options, baos);
        options -= 10;
    }
    ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());
    Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);
    return bitmap;