Bisher war ich der Meinung, dass folgendes eigentlich nicht funktionieren kann, aber es geht:
Mit dieser Methode greife ich mittels get-Funktion auf ein BufferedImage von 'FrameHolder' zu:
die Klasse 'ImageFrameHolder' sieht so aus:
Im Hauptprogramm wird 'test' nun folgendermaßen aufgerufen:
Die letzte Zeile sorgt dafür, dass der gefilterte Frame am Bildschirm ausgegeben wird. In 'test' kann ich mit getImage() auf die private Variable _img zugreifen. Was mich nun wirklich wundert, dass dann am Ende tatsächlich das Bild so gefiltert dargestellt wird, wie ich es in 'test' ändere. Ich hab doch damit '_img' geändert, obwohl ich das ja eigentlich nicht dürfte?
Mit dieser Methode greife ich mittels get-Funktion auf ein BufferedImage von 'FrameHolder' zu:
Code:
public static void test(Buffer in, FrameHolder out, int width, int height, boolean littleEndian){
BufferedImage image = ((ImageFrameHolder) out).getImage();
for (int y = 0; y < image.getHeight(); y++){
for (int x = 0; x < image.getWidth(); x++){
image.setRGB(x, y, irgendwie);
}
}
die Klasse 'ImageFrameHolder' sieht so aus:
Code:
public class ImageFrameHolder extends FrameHolder {
private BufferedImage _img;
...
public BufferedImage getImage() {
return _img;
}
Im Hauptprogramm wird 'test' nun folgendermaßen aufgerufen:
Code:
test(frame[nextBuffer], frameFiltered[nextFilteredBuffer], true);
_frameListener.newFrame(frameFiltered[nextFilteredBuffer]);
Die letzte Zeile sorgt dafür, dass der gefilterte Frame am Bildschirm ausgegeben wird. In 'test' kann ich mit getImage() auf die private Variable _img zugreifen. Was mich nun wirklich wundert, dass dann am Ende tatsächlich das Bild so gefiltert dargestellt wird, wie ich es in 'test' ändere. Ich hab doch damit '_img' geändert, obwohl ich das ja eigentlich nicht dürfte?