使用函数更改位图颜色



我需要一个函数,该函数将获取一个位图并返回更改颜色的位图。它需要快速而简单。

它的目的是改变颜色,也是一个带有字母的png。

我在网上看了一下,但我不能使用画布或任何外部的东西。函数位于外部对象中(不要问..)

这是我迄今为止尝试过的(没有工作)。我知道我真的很接近了,只是一个整理颜色矩阵并让阿尔法发挥作用的问题。

public Bitmap changeBitmapColor(Bitmap sourceBitmap, int deg)
{   
    int width, height;
    height = sourceBitmap.getHeight();
    width = sourceBitmap.getWidth();    
    Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
    Canvas c = new Canvas(bmpGrayscale);
    Paint paint = new Paint();
    //figure out color matricies.
    ColorMatrix cm = new ColorMatrix();
    //cm.setSaturation(0);
    cm.set(new float[] 
    {
            0, 0, 0, 0, 0,
            0, 1, 0, 0, 0,
            0, 0, 255, 0, 0,
            0, 0, 0, 1, 0,
            0, 0, 0, 0, 1
         }); 

    ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
    paint.setColorFilter(f);
    c.drawBitmap(sourceBitmap, 0, 0, paint);
    return bmpGrayscale;
}

任何帮助都会很棒!

-------固定--------

我已经通过改变颜色矩阵解决了这个问题,现在位图将改变颜色&不显示alpha值。

首先是矩阵:

    cm.set(new float[] 
    {
            0, 0, 0, 0, 0,
            0, 1, 0, 0, 0,
            0, 0, 140, 0, 0,
            0, 0, 0, 1, 0,
            0, 0, 0, 0, 1
    }); 

我必须更改的第二件事是这行代码:

Bitmap newBM = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

祝读者好运!

我不明白为什么单机版不能使用Canvas。您可以创建一个新的位图,创建一个画布绘制到其中,然后使用具有滤色器集的paint绘制原始位图(使用setColorFilter)。PorterDuffColorFilter类可能对此有所帮助。

我不明白你改变颜色的目的是什么,参数int deg是什么意思??对于alpha:将Bitmap bmpGrayscale中的颜色模型从RGB_565更改为ARGB_8888可能会有所帮助,因为该颜色模型具有alpha通道。查看Bitmap.Config

--------固定--------

我已经通过改变颜色矩阵解决了这个问题,现在位图将改变颜色&不显示alpha值。

首先是矩阵:

cm.set(new float[] 
{
        0, 0, 0, 0, 0,
        0, 1, 0, 0, 0,
        0, 0, 140, 0, 0,
        0, 0, 0, 1, 0,
        0, 0, 0, 0, 1
}); 

我必须更改的第二件事是这行代码:

Bitmap newBM=Bitmap.createBitmap(宽度、高度、Bitmap.Config.ARGB_8888);

祝读者好运!

您还没有确切说明要对颜色进行哪些更改。您定义的cm矩阵看起来像是多了一行,它去掉了红色,只剩下绿色和alpha,并将蓝色乘以255。我猜这不是你想要的。

我要去的文件http://developer.android.com/reference/android/graphics/ColorMatrix.html

如果你试图旋转色调,你可能会从这个答案中得到一些好的信息:https://stackoverflow.com/a/8510751/5987

相关内容

  • 没有找到相关文章

最新更新