5

私のアプリでは、ビットマップは色が低品質のタイプであるかのように描画されます。ギャラリー アプリを使用して背景画像を読み込むと、問題なく読み込まれ、超低品質のようには見えません。画像を読み込んで描画するために使用しているコードは単純です。

//Code for initializing the Bitmap
Bitmap bitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.none), (int) (canvas.getWidth() * compression), (int) (canvas.getHeight() * compression), true);
//...
//Code for drawing this Bitmap
canvas.drawBitmap(bitmap, null, new RectF(0, 0, canvas.getWidth(), canvas.getHeight()), null);

コードに何が問題なのかが分からない場合は、コンピューターや他の画像ビューアーで実際にどのように見えるか、アプリでどのように見えるかを比較する画像を作成しました。 上の画像は電話のアプリ、下の画像は背景画像が実際にどのように見えるかです。 上の画像の線に注目してください。 どうしたの?

4

1 に答える 1

5

質問は、ビットマップのサイズ変更/スケーリング後の画像品質の低下に多少似ています

スケーリングを無効にし、オフスクリーン ビットマップのサイズを変更して、ビットマップが 32 ビット (ARGB888) であることを確認します。

Options options = new BitmapFactory.Options();
options.inScaled = false;
options.inDither = false;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap source = BitmapFactory.decodeResource(a.getResources(), path, options);

画像のスケーリング/処理に関する別の優れた完全な回答は、実行時に画像のサイズを変更するときの品質の問題で見つけることができます

于 2012-05-12T23:33:25.310 に答える