2016-10-14 2 views
0

Ich versuche, ein Bild mit einem Sepia-Filter auszudrucken, aber es druckt nur das gleiche (unbearbeitete) Bild zweimal. Wie bekomme ich meinen sepia Code unten um zu arbeiten? Der Code verwandelt das Bild in Graustufen und dann Sepia.Wie gebe ich ein Bild ein Sepia Filter

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

Sind Sie Art, dass Denk Javascript ist der große Bruder von Java oder so etwas? ;-) –

+0

Was ist 'APImage'? Es ist nicht Teil der Java-Standardbibliothek. Was ist Pixel? –

+0

@ErwinBolwidt Ich habe auch gegooglet, es ist http://home.wlu.edu/~lambertk/hsjava/edition4/whatsnew/imagedocs/images/apimage.html (einige seltsame Stück Code, IMHO ...) – Marco13

Antwort

0

Versuchen Sie, und fügen Sie dies vor der Verlosung.

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

auch, nehmen Sie die Auslosung und speichern aus der for-Schleife

+0

Ich habe das versucht und es hat nicht funktioniert. – Marlee3jackson

+0

Kurz vor 'aCopy.draw()'? –

+1

Zusätzlich zur Einstellung der RGB-Komponenten, wie oben beschrieben: ** Verschiebe die 'aCopy.draw();' und 'aCopy.save();' aus der 'for'-Schleife! ** – Marco13

Verwandte Themen