Tôi có một Bitmap
với kích thước của 320x480
và tôi cần phải căng nó trên màn hình thiết bị khác nhau, tôi đã cố gắng sử dụng này:Làm thế nào để thay đổi kích thước một bitmap eficiently và với ra chất lượng mất đi trong android
Rect dstRect = new Rect();
canvas.getClipBounds(dstRect);
canvas.drawBitmap(frameBuffer, null, dstRect, null);
nó hoạt động , hình ảnh lấp đầy toàn bộ màn hình như tôi muốn nhưng hình ảnh được pixelated và có vẻ xấu. Sau đó, tôi đã cố gắng:
float scaleWidth = (float) newWidth/width;
float scaleHeight = (float) newHeight/height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizedBitmap = Bitmap.createBitmap(frameBuffer, 0, 0,
width, height, matrix, true);
canvas.drawBitmap(resizedBitmap, 0, 0, null);
thời gian này có vẻ hoàn hảo, đẹp và mịn, nhưng mã này có được trong vòng đấu chính của tôi và tạo Bitmap
s mỗi lần lặp làm cho nó rất chậm. Làm thế nào tôi có thể thay đổi kích thước hình ảnh của tôi để nó không được pixelated và được thực hiện nhanh chóng?
tìm thấy giải pháp:
Paint paint = new Paint();
paint.setFilterBitmap();
canvas.drawBitmap(bitmap, matrix, paint);
Nếu bạn tìm thấy giải pháp của riêng mình, bạn nên thêm giải pháp đó làm câu trả lời cho câu hỏi của mình và tự chấp nhận câu hỏi để người khác không thêm câu trả lời không mong muốn cho câu hỏi của bạn. – Kuffs