2016-10-14 8 views
0

セピアフィルタで画像を印刷しようとしていますが、同じ(編集されていない)画像を2回印刷します。一番下のセピアコードを動作させるにはどうすればよいですか?コードは画像をグレースケールに変換し、セピアに変換します。画像にセピアフィルタを付けるには

import images.*; 

public class Sepia{ 

public static void main(String[]args){ 
    APImage image = new APImage("lobster.jpg"); 
    image.draw(); 
    APImage aCopy = image.clone(); 
    for (Pixel p: aCopy){ 
    int red = p.getRed(); 
    int green = p.getGreen(); 
    int blue = p.getBlue(); 
    int average = (red + green + blue)/3; 
    p.setRed(average); 
    p.setGreen(average); 
    p.setBlue(average); 

    if (red < 63){ 
     red = (int)(red *1.1); 
     blue = (int)(blue * 0.9); 
    }else if (red < 192){ 
     red = (int)(red*1.15); 
     blue = (int)(blue *0.85); 
    }else{ 
     red = Math.min((int)(red*1.08),255); 
     blue = (int)(blue *0.93); 
    } 

    aCopy.draw(); 
    aCopy.save(); 
    } 
} 
} 
+0

のうち、保存あなたは一種のjavascriptのは、Javaか何かの兄であることを考えていますか? ;-) –

+0

'APImage'とは何ですか?これはJava標準ライブラリの一部ではありません。 Pixelとは何ですか? –

+0

@ErwinBolwidt私もgoogled、それはhttp://home.wlu.edu/~lambertk/hsjava/edition4/whatsnew/imagedocs/images/apimage.html(いくつかのawkrwardコード、IMHO ...) – Marco13

答えて

0

ドロー前にこれを試して追加してください。

p.setRed(red); 
p.setGreen(green); 
p.setBlue(blue); 

も、引き分けを取り、forループ

+0

私はそれを試みたそれは動作しませんでした。 – Marlee3jackson

+0

'aCopy.draw()'の直前ですか? –

+1

上記のようにRGBコンポーネントを設定することに加えて、** 'for'ループから' aCopy.draw(); 'と' aCopy.save();を移動してください!** – Marco13

関連する問題