我正在開發一個像學習圖像處理和android應用程序的Instagram。但是我卡住了,我的應用程序中實施灰度過濾器時出現問題。我正在嘗試一種簡單的方法來將位圖中的各個像素轉換爲灰度。如何操作位圖中的像素?
這裏是全班我寫信給不同的過濾器應用於圖像:
package com.dosa2.photoeditor.ImageEffects;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
public class ImageEffects {
Bitmap bitmap;
int width, height;
public ImageEffects(Bitmap bitmap) {
this.bitmap = bitmap;
width = bitmap.getWidth();
height = bitmap.getHeight();
}
public Bitmap toGrayscale() {
Bitmap resultBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(resultBitmap);
Paint p = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
p.setColorFilter(f);
c.drawBitmap(bitmap, 0, 0, p);
return resultBitmap;
}
public Bitmap toGrayscale2() {
Bitmap resultBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
for(int i=0;i<height;i++) {
for (int j=0;i<width;j++) {
int c = bitmap.getPixel(i,j);
resultBitmap.setPixel(i, j, (Color.red(c)+Color.blue(c)+Color.green(c)/3));
}
}
return resultBitmap;
}
}
我曾嘗試2種方法的位圖轉換成灰度。前者似乎在工作(但我無法理解),後者則不是。 任何人都可以幫我嗎?如果有更簡單的方式來操縱Android中的圖片,請務必提及。
前者(使用ColorMatrix)是最有效的。因爲它可以一次完成整個位圖,而不必循環到2個循環。您可能一開始並不瞭解ColorMAtrices,但有很多文檔(不僅在Java中,而且在Android中也是如此 - 例如,我也在VB,NET和C#中使用它們) –
我在哪裏可以找到文檔或一個良好的學習資源?對於Google而言,這個Google地址是 – jstraj
。 –