G
Gast
Gast
Servus. Ich habe ein BufferedImage vorliegen, das mit TYPE_INT_ARGB erzeugt wird. Wenn ich jetzt mit einer LookupOp bestimmte Farbbereiche ersetzen will, benutze ich folgenden Code-Schnippsel:
Die Bilder werden angezeigt, die Pixel bis zu einem bestimmten Punkt ersetzt und es kommt zu einem Abbruch.
src[3] ist wohl Fehl am Platz. Es erscheint die Fehlermeldung:
Exception in thread "Thread-2" java.lang.ArrayIndexOutOfBoundsException: 2
at SN32.Editor.Tileset_Elements.ColorReplaceLookupTable.lookupPixel(ColorReplaceLookupTable.java:18)
at java.awt.image.LookupOp.filter(LookupOp.java:300)
at java.awt.image.LookupOp.filter(LookupOp.java:204)
at SN32.Editor.Tabs.EditTilesetTab.run(EditTilesetTab.java:73)
at java.lang.Thread.run(Thread.java:595)
Wie kann man dennoch mit so einer LookupTable die Alpha-Kanäle erfassen - wenn anscheinend nicht so?
Wäre schön, wenn ihr mir helfen könnten :?
Code:
public class ColorReplaceLookupTable extends LookupTable {
private Color srcColor;
private Color dstColor;
public ColorReplaceLookupTable(Color srcColor, Color dstColor) {
super(0, 1);
this.srcColor = srcColor;
this.dstColor = dstColor;
}
@Override
public int[] lookupPixel(int[] src, int[] dest) {
if (src[0] == srcColor.getRed() &&
src[1] == srcColor.getGreen() &&
src[2] == srcColor.getBlue() &&
src[3] == srcColor.getAlpha())
{
src[0] = dstColor.getRed();
src[1] = dstColor.getGreen();
src[2] = dstColor.getBlue();
src[3] = dstColor.getAlpha();
}
return src;
}
}
Die Bilder werden angezeigt, die Pixel bis zu einem bestimmten Punkt ersetzt und es kommt zu einem Abbruch.
src[3] ist wohl Fehl am Platz. Es erscheint die Fehlermeldung:
Exception in thread "Thread-2" java.lang.ArrayIndexOutOfBoundsException: 2
at SN32.Editor.Tileset_Elements.ColorReplaceLookupTable.lookupPixel(ColorReplaceLookupTable.java:18)
at java.awt.image.LookupOp.filter(LookupOp.java:300)
at java.awt.image.LookupOp.filter(LookupOp.java:204)
at SN32.Editor.Tabs.EditTilesetTab.run(EditTilesetTab.java:73)
at java.lang.Thread.run(Thread.java:595)
Wie kann man dennoch mit so einer LookupTable die Alpha-Kanäle erfassen - wenn anscheinend nicht so?
Wäre schön, wenn ihr mir helfen könnten :?