Bitmap.createScaledBitmap 过滤未按预期工作
Bitmap.createScaledBitmap filtering not working as expected
我在 Android 的自定义小部件 canvas 中使用 Bitmap.createScaledBitmap 时遇到问题。
该小部件应该显示给定资源的缩放非抗锯齿版本。
小部件中有以下代码class:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Bitmap bmp = BitmapFactory.decodeResource(this.getResources(), R.drawable.btn);
bmp = Bitmap.createScaledBitmap(bmp, bmp.getWidth()*3, bmp.getHeight()*3, false);
canvas.drawBitmap(bmp, 0, 0, null);
}
createScaledBitmap 的 "false" 参数应该关闭抗锯齿过滤。结果按比例缩放,但很平滑。将值更改为 "true" 没有任何区别。
还有其他方法可以达到我想要的结果吗?
经过一番折腾,问题似乎出在通过getResources()获取位图。无论使用哪种绘图方法,它们总是会被过滤。
我的解决方法是将所有图像放在 /assets 文件夹中,然后通过 getAssets() 提取它们。 (仍然不确定这种做法有多糟糕...)
我在 Android 的自定义小部件 canvas 中使用 Bitmap.createScaledBitmap 时遇到问题。 该小部件应该显示给定资源的缩放非抗锯齿版本。
小部件中有以下代码class:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Bitmap bmp = BitmapFactory.decodeResource(this.getResources(), R.drawable.btn);
bmp = Bitmap.createScaledBitmap(bmp, bmp.getWidth()*3, bmp.getHeight()*3, false);
canvas.drawBitmap(bmp, 0, 0, null);
}
createScaledBitmap 的 "false" 参数应该关闭抗锯齿过滤。结果按比例缩放,但很平滑。将值更改为 "true" 没有任何区别。
还有其他方法可以达到我想要的结果吗?
经过一番折腾,问题似乎出在通过getResources()获取位图。无论使用哪种绘图方法,它们总是会被过滤。
我的解决方法是将所有图像放在 /assets 文件夹中,然后通过 getAssets() 提取它们。 (仍然不确定这种做法有多糟糕...)