缩小后的Png图像损失质量

时间:2019-12-19 06:46:43

标签: android bitmap resize

public static Bitmap resizeBitmap(Bitmap bitmap, int newWidth, int newHeight) {
    Bitmap scaledBitmap = Bitmap.createBitmap(newWidth, newHeight, Bitmap.Config.ARGB_8888);

    float ratioX = newWidth / (float) bitmap.getWidth();
    float ratioY = newHeight / (float) bitmap.getHeight();
    float middleX = newWidth / 2.0f;
    float middleY = newHeight / 2.0f;

    Matrix scaleMatrix = new Matrix();
    scaleMatrix.setScale(ratioX, ratioY, middleX, middleY);
    Paint paint=new Paint(Paint.FILTER_BITMAP_FLAG);
    paint.setAntiAlias(true);

    Canvas canvas = new Canvas(scaledBitmap);
    canvas.setMatrix(scaleMatrix);
    canvas.drawBitmap(bitmap, middleX - bitmap.getWidth() / 2, middleY - bitmap.getHeight() / 2, paint);

    return scaledBitmap;

}

    Bitmap largePngImage=BitmapFactory.decodeResource(getResources(),R.drawable.largeimage);
Bitmap scaledImage=resizeBitmap(largePngImage,266,80)

尺寸为2328 X 702的原始png图像。 缩放后的图像具有所需的宽度和高度,但是质量很差。

1 个答案:

答案 0 :(得分:0)

您可以尝试

Bitmap bitmap;
Bitmap resizedBitmap = Bitmap.createScaledBitmap(Bitmap, newWidth, newHeight, true);

当前,您只是以较小的尺寸重新绘制位图,有时会“破坏”照片,而createScaledBitmap会创建一个新的位图,并在可能的情况下根据现有位图进行缩放。

相关问题