Tutorial1Activityクラスと同じ場所にSepiaFilterクラスを作成します。その後、filterメソッドに以下のコードを入力します。
public int[] filter(int[] imageArray, int width, int height) { int length = width*height; int[] oimgArray = new int[imageArray.length]; int rgb; int red,green,blue; int y_val; for(int i =0;i < length;i++){ rgb = imageArray[i]; red = (rgb >> 16) & 0xff; green = (rgb >> 8) & 0xff; blue = (rgb) & 0xff; y_val = ( 2 * red + 4 * green + blue ) / 7;//① red=(int)(y_val*240)/255;//② green=(int)(y_val*200)/255; blue=(int)(y_val*145)/255; oimgArray[i]=255*16777216+red*65536+green*256+blue; } return oimgArray; }
①ではRGB値を輝度グレイスケールに変換しています。その後②で輝度をRGBそれぞれについて指定の割合で変換します。この割合はよく使われている程度の認識で大丈夫でしょう。
最後に、 Tutorial1Activityクラスのint imageArray[]=ba2ia(ba);の下に以下の文を記入します。
imageArray=new SepiaFilter().filter(imageArray, imagewidth, imageheight);
以下に実機での実行結果を示します。
0 件のコメント:
コメントを投稿