我需要一個函數,它將採用位圖並使用更改後的顏色返回位圖。它需要快速簡單。使用功能更改位圖顏色
它的目的是改變顏色,它也是一個帶alpha的png。
我看過網上,但我不能使用畫布或任何外部。該函數駐留在一個外部對象(不要問..)
這是我到目前爲止(去工作)。我知道我真的很接近,只是一個整理顏色矩陣和變成alpha的問題。
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);
好運讀者!
感謝您的幫助。我想到了! :-) – 2012-03-22 22:21:05