android - 资源到位图的转换导致质量不佳

标签 android

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

我什至尝试过像 options.inPreferredConfigoptions.inJustDecodeBoundsoptions.inDither 这样的 BitmapFactoryOptions,但结果几乎是相同的;质量差的图像。

另一方面,如果我只使用 setImageResource,图像不会变质并且质量可能是最好的。

所以基本上就是这两段代码

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

  2. 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/

相关文章:

java - Android 中的 NumberFormatException

android - 以编程方式启用和设置输入法

android - 我的 Android 应用程序在按下主页按钮后崩溃

android - 如何避免 ImageView 中的图像拉伸(stretch)

android - 自定义复选框显示 2.3 和 4.2 的不同布局

Android Studio - 在 fragment 中使用 Assets 管理器设置自定义字体

android - 设置宽度(以像素为单位)是否使用 dp 或 px?

android - 由于未接受许可协议(protocol),run-android 无法运行

java - DatabaseException : Failed to convert value of type java. util.HashMap 到字符串 - Firebase

android - 在 Activity 之间传递值