我有一个尺寸为960x800的图像,我正试图让它填满屏幕。
我目前的做法是加载完整的960x800位图并使用源和目标Rect
对象。到目前为止,我的目标矩形是480x320(我的屏幕尺寸),源矩形将是960x800。
background = BitmapFactory.decodeResource(getResources(), R.drawable.background, null);
destRect = new Rect(0,0, screenWidth, screenHeight);
sourceRect = new Rect(0,0, background.getWidth(), background.getHeight());
...
c.drawBitmap(background, sourceRect, destRect, backgroundPaint);
如果我使用Paint
对象并在将背景设置为画布时将抖动设置为true,则图像看起来绝对完美。
Paint backgroundPaint = new Paint();
backgroundPaint .setDither(true);
我的结论是,这可能效率不高,导致每次抽奖都要做不必要的工作。为了解决这个问题,我想尝试执行以下操作:
background = BitmapFactory.decodeResource(getResources(), R.drawable.background, null);
background = Bitmap.createScaledBitmap(background, display.getWidth(), display.getHeight(), true);
从而创建一个已经很大的位图,消除了对任何Rect
个对象的需求。但是,在执行此操作时,我无法使用上述方法保持相同的图像质量。事实上,如果我不使用上述方法的Paint
对象,图像看起来类似于可以看到的图像。使用缩放位图上的绘制对象似乎没有效果。
举例说明我的图片的外观,它类似于this图片(尽管不那么严重)
我能做些什么来获得相同的图像质量吗?
答案 0 :(得分:0)
这是条件,如果您希望图像的宽度为140,那么高度将自动调整大小
Bitmap originalBitmap = BitmapFactory.decodeFile(getResources(), R.drawable.background, null);
Bitmap bitmap=originalBitmap;
if (bitmap !=null) {
int h = bitmap.getHeight();
int w = bitmap.getWidth();
h = 140*h/w;
w = 140;
bitmap = Bitmap.createScaledBitmap(bitmap, w, h, true);
setIconImage(bitmap);
}