我以前从未真正注意到它,但是当我使用 setImageBitmap 更改 imageview 的图像时,使用从使用 BitmapFactory 的资源解码的位图,然后图像质量下降,我不知道为什么。
我什至尝试过像 options.inPreferredConfig
、options.inJustDecodeBounds
、options.inDither
这样的 BitmapFactoryOptions,但结果几乎是相同的;质量差的图像。
另一方面,如果我只使用 setImageResource,图像不会变质并且质量可能是最好的。
所以基本上就是这两段代码
位图 b=BitmapFactory.decodeResource(getResources(), R.drawable.keypad,options); iv.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.keypad))
iv.setImageResource(R.drawable.messages);
导致不同的图像质量。
谁能解释一下为什么?以及如何使用代码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));
将 BitmapFactory.Options
类的 inScaled
参数设置为 false,将防止低屏幕分辨率下的图像模糊,因为它会阻止 this previous SO question. 的答案中提到的缩放可能你已经试过了,但我认为值得一提。
关于android - 资源到位图的转换导致质量不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11567599/