gpt4 book ai didi

android - 在android中创建缩放位图时保持图像质量

转载 作者:太空狗 更新时间:2023-10-29 15:20:24 25 4
gpt4 key购买 nike

我有一张尺寸为 960x800 的图片,我正试图让它填满屏幕。

我目前使用的方法是加载完整的 960x800 位图并使用源和目标 Rect 对象。到目前为止,我的目标矩形是 480x320(我的屏幕尺寸),源矩形是 960x800。

background = BitmapFactory.decodeResource(getResources(), R.drawable.background, null);
destRect = new Rect(0,0, screenWidth, screenHeight);
sourceRect = new Rect(0,0, background.getWidth(), background.getHeight());
...
c.drawBitmap(background, sourceRect, destRect, backgroundPaint);

如果我随后使用 Paint 对象并将 dither 设置为 true,然后尝试在 Canvas 上设置背景,图像看起来绝对完美。

Paint backgroundPaint = new Paint();
backgroundPaint .setDither(true);

我得出结论,这可能不是很有效,导致在每次绘制调用时都进行不必要的工作。为了解决这个问题,我想尝试执行以下操作:

background = BitmapFactory.decodeResource(getResources(), R.drawable.background, null);
background = Bitmap.createScaledBitmap(background, display.getWidth(), display.getHeight(), true);

从而创建一个已经确定大小的位图,消除对任何 Rect 对象的需要。但是,这样做时,我无法保持与上述方法相同的图像质量。事实上,如果我不通过上述方法使用 Paint 对象,图像看起来与可以看到的图像相似。在缩放位图上使用绘画对象似乎没有效果。

举例说明我的图像的外观,它类似于 this图片(虽然没有那么严重)

我可以做些什么来获得相同的图像质量?

最佳答案

如果你希望你的图片宽度为 140,那么你的高度会自动调整大小

    Bitmap originalBitmap = BitmapFactory.decodeFile(getResources(), R.drawable.background, null);
Bitmap bitmap=originalBitmap;
if (bitmap !=null) {
int h = bitmap.getHeight();
int w = bitmap.getWidth();
h = 140*h/w;
w = 140;
bitmap = Bitmap.createScaledBitmap(bitmap, w, h, true);
setIconImage(bitmap);
}

关于android - 在android中创建缩放位图时保持图像质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8372313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com