资源到位图转换导致质量差

时间:2012-07-19 19:04:05

标签: android

之前我从未真正注意到它,但是当我使用setImageBitmap更改图像视图的图像时,使用使用BitmapFactory从资源解码的位图,然后图像质量下降,我不知道为什么。

我甚至玩过options.inPreferredConfigoptions.inJustDecodeBoundsoptions.inDither之类的BitmapFactoryOptions,但结果几乎相同;质量差的图像。

另一方面,如果我只使用setImageResource,图像不会恶化并且质量最佳。

基本上这两个代码

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

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

  3. 会导致不同的图像质量。

    任何人都可以解释原因吗?以及如何使用代码1解决此质量问题。

1 个答案:

答案 0 :(得分: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类的BitmapFactory.Options参数设置为false,可以防止在低屏幕分辨率下出现模糊图像,因为它会阻止this previous SO question.答案中提到的瑕疵,也许您已经尝试过了这个,但我认为值得一提。