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图像。 缩放后的图像具有所需的宽度和高度,但是质量很差。
答案 0 :(得分:0)
您可以尝试
Bitmap bitmap;
Bitmap resizedBitmap = Bitmap.createScaledBitmap(Bitmap, newWidth, newHeight, true);
当前,您只是以较小的尺寸重新绘制位图,有时会“破坏”照片,而createScaledBitmap会创建一个新的位图,并在可能的情况下根据现有位图进行缩放。