缩放图像显示某种平铺

时间:2012-01-03 10:37:02

标签: android image scale

在我的应用中,我将图像动态缩放到原始大小的50%。缩放时,它会显示某种拼贴(如下图所示)。图像的方形部分比相邻的瓷砖更亮,应该具有相同的颜色。它几乎没有引人注意,但它对我的应用程序来说还不够好。正方形的大小取决于缩放因子。因此,在尺寸为75%的情况下,瓷砖更小。

示例:

enter image description here

我的绘图代码(在我的自定义视图的onDraw中调用):

private void drawImage(Bitmap bitmap, float scaling,
        Canvas canvas, float offset)
{

    Matrix p = new Matrix();
    Matrix m = new Matrix();
    Matrix y = new Matrix();
    Matrix o = new Matrix();

    p.setTranslate(-bitmap.getWidth() / 2, -bitmap.getHeight() / 2);

    // translation to views center (minus half height of image
    // so that the bottom of the picture is in the views center.
    y.setTranslate(getWidth() / 2, getHeight() / 2);
    // offset translation.
    o.setTranslate(offset, 0);

    m.setScale(scaling, scaling);
    m.preConcat(p);
    m.postConcat(y);
    m.postConcat(o);

    // draw image
    canvas.drawBitmap(bitmap, m, null);
}

有谁知道如何防止这种拼贴?

2 个答案:

答案 0 :(得分:1)

您是在设备上还是在模拟器中看到它?因为在设备上,一些低质量的GPU可以引入“抖动”效果,缺少GPU或模拟器的设备不会产生。

解决方案是在Photoshop或Bitmap API中预先缩放图像。

答案 1 :(得分:1)

您是否尝试canvas.drawBitmap(bitmap, m, new Paint(Paint.FILTER_BITMAP_FLAG)) here