2

今まであまり気にしたことはありませんでしたが、BitmapFactory を使用してリソースからデコードされたビットマップを使用して、setImageBitmap を使用してイメージビューの画像を変更すると、画像の品質が低下し、その理由がわかりません。

options.inPreferredConfigoptions.inJustDecodeBounds、のような BitmapFactoryOptions をいじってみましoptions.inDitherたが、結果はほとんど同じでした。画質が悪い。

一方、setImageResource だけを使用すると、画像は劣化せず、可能な限り最高の品質になります。

したがって、基本的にこれら2つのコード

  1. Bitmap b=BitmapFactory.decodeResource(getResources(), R.drawable.keypad,options); iv.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.keypad))

  2. iv.setImageResource(R.drawable.messages);

画質が異なります。

誰でも理由を説明できますか?そして、コード 1 を使用してこの品質問題を解決する方法。

4

1 に答える 1

1

メソッドを使用して画像がぼやけている場合は、次のBitmapFactory.decodeResourceコードを使用できます。

Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap b = BitmapFactory.decodeResource(getResources(), path, options);
iv.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.keypad));

inScaledクラスのパラメーターを false に設定すると、この前の SO の質問BitmapFactory.Optionsの回答で述べたように、スケーリングが防止されるため、低解像度の画面でぼやけた画像が防止されます。すでにこれを試したことがあるかもしれませんが、言及する価値があると思いました。

于 2012-07-19T19:40:28.223 に答える