2

下面的代码没有对源位图 mBitmap 进行任何更改是有原因的吗?mBitmap 是一个灰度图像,我想对其应用颜色过滤器。滤镜本身并不重要,但我应用的任何颜色滤镜都没有效果。绘制到屏幕上的是原始位图,就好像我没有对其应用过滤器一样。

我可以对其应用不同的滤色器,例如:

mPaint.setColorFilter(new LightingColorFilter(Color.RED, 100));

但是当我从颜色矩阵创建滤色器时,我什么也得不到。

我使用的是安卓 2.3。

我的代码:

float[] mat = new float[] {
        1f, 0f, 0f, 0f, 1f,
        2f, 0f, 2f, 1f, 0f,
        1f, 1f, 0f, 0f, 0f,
        0f, 0f, 0f, 1f, 0f,
        2f, 0f, 0f, 0f, 1f };

ColorMatrix colorMatrix = new ColorMatrix(mat);
ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);

mPaint.setColorFilter(colorFilter);

mCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
mCanvas.drawBitmap(mBitmap, 0, 0, mPaint);
4

1 回答 1

2

很抱歉问这个问题。由于我缺乏理解,它的形成很差。据我所知,上面的 ColorMatrix实际上什么也没做

简而言之,我最初的问题源于我试图对灰度图像进行色调调整。事实证明:对灰度图像进行色调调整没有任何意义,因此我没有看到任何变化。

困惑来自这个(优秀的)问题:

了解使用 ColorMatrix 和 ColorMatrixColorFilter 修改 Drawable 的色调

我假设提问者只是对灰度图像进行色调调整,正如他最初要求的那样。现在我知道他必须对一些以前彩色的图像进行色调调整。

呃,好吧。最好的学习形式来自被迫真正思考你想要做什么!

于 2012-07-24T00:27:25.447 回答