Tutorial1Activityクラスと同じ場所にSaturationFilterクラスを作成します。その後、filterメソッドに以下のコードを入力します。
public int[] filter(int[] imageArray, int width, int height, int value) { HSVTrans trans=new HSVTrans(); int length = width*height; int[] oimgArray = new int[imageArray.length]; int hsv[]=new int[3]; for(int i =0;i < length;i++){ hsv=trans.RGBtoHSV(imageArray[i]);//① hsv[1]+=value;//② if(hsv[1] > 255){ hsv[1]=255;//③ }else if(hsv[1] < 0){ hsv[1]=0;//③ } oimgArray[i]=trans.HSVtoRGB(hsv); } return oimgArray; }①ではRGB値を含むint型の値をHSV配列に変換します。
②ではHSVのなかでSに任意の値(メソッドの第4引数)を加えます。
③では②で変化したSの値が0~255の範囲となるように値をまるめます。
④ではHSVの値をRGBに戻します。
最後に、 Tutorial1Activityクラスのint imageArray[]=ba2ia(ba);の下に以下の文を記入します。
imageArray=new SaturationFilter().filter(imageArray, imagewidth, imageheight, 30);
メソッドの第4引数が変化させる彩度の値を示します。
以下に実機での実行結果を示します。元の画像から少し鮮やかさが増しているのがわかります。
0 件のコメント:
コメントを投稿