Hi, habe folgendes Problem:
Ich möchte die Farben eines Bildes invertieren und habe dazu folgendes Codebeispiel aus dem Netz gefunden:
Um ein BufferedImage zu erhalten wende ich nun folgendes an:
Wenn ich das tue kommt allerdings ein Fehler
Das Bild lese ich ein mit:
Natürlich könnte man die Farben auch anders invertieren, wie ich bei der Forensuche gemerkt habe, aber ich möcht es schon ganz gern mit der BufferedImageOp machen, muss ja auch irgendwie gehn
Ich möchte die Farben eines Bildes invertieren und habe dazu folgendes Codebeispiel aus dem Netz gefunden:
Code:
short[] invert = new short[256];
for (int i = 0; i < 256; i++)
invert[i] = (short)(255 - i);
BufferedImageOp invertOp = new LookupOp(new ShortLookupTable(0, invert), null);
Um ein BufferedImage zu erhalten wende ich nun folgendes an:
Code:
invertedImg = invertOp.filter( img, null );
Wenn ich das tue kommt allerdings ein Fehler
Exception in thread "main" java.lang.IllegalArgumentException: Number of color/alpha components should be 3 but length of bits array is 1
Das Bild lese ich ein mit:
Code:
BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_4BYTE_ABGR);
try {
File f = new File(file);
img = ImageIO.read(f);
} catch (IOException e) {
System.out.printf ("File not found: %s\n", file);
System.exit (0);
}
Natürlich könnte man die Farben auch anders invertieren, wie ich bei der Forensuche gemerkt habe, aber ich möcht es schon ganz gern mit der BufferedImageOp machen, muss ja auch irgendwie gehn