サイズが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
オブジェクトの必要性をelminating、すでにサイズのビットマップを作成:これに対抗するために、私は次のことを試してみてやりたいです。しかし、これを行うとき、私は上記の方法でできる限り同じ画質を維持できません。実際には、前述の方法でPaint
オブジェクトを使用しないと見える画像に似ています。スケーリングされたビットマップ上のペイントオブジェクトを使用しても一見効果はありません。
は、私は同じ画像品質を得るために行うことができるものはありますか?