Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Bild vom Applet mit einem weiteren vergleichen

Aloa Leutz...

Ich muss für meine Facharbeit ein Java-Programm schreiben, was einen Roboter darstellt...

Soweit lief es ganz gut... nur muss ich jetzt einen Radar einbauen ...

Ich dachte mir, dass ich die Umgebung um den Roboter "fotografieren" kann um dann später ein ebenso erzeugtes Bild mit dem diesem zu vergleichen ...

Sprich: Ich will ein Image vom Applet erzeugen und dies immer mit dem vorher erzeugten vergleichen ...

Kann mir einer sagen, wie das geht????

Ich brauch beide Funktionen: Image vom Applet machen und Bilder vergleichen.

Zu beachten ist vll auch, dass nur ein bestimmter bereich, zB. (200, 0, RestvomBildschirm, RestvomBildschirm) "fotografiert" werden soll!

THX- Stiewen


Antworten zu Bild vom Applet mit einem weiteren vergleichen:

Also??

Ich kapier ned ganz was du wirklich willst kannst du das auch a bisssal genauer beschreiben und oder mal des Programm herzeigen, dass du bis jetzt hast?

MFG
BWA

Na, wie kann man vom Applet ein Bild machen und das dann später vergleichen ...???

Ich will gucken, ob sich was im Fenster mit den Pixeln getan hat... ob ein Rechteck verschobben wurde oder so ..

THX

Ich glaub das geht ned wirklich, kannst du es ned so regel dass du des direkt bei der Ausgabe vergleichts, dh. heißt ned den Screen sondern die Abfrage direkt in den Code einbauen der das Applet erzeugt.

Oder meinst du das anders?

MFG
BWA

Hm,... also ich schildere noch mal alles:

Ich mach meine Facharbeit über den Weg eines Roboters zur Intelligenz.
Dabei schreibe ich ein Java-Prog, was das ganze ein wenig darstellen soll...
Nun bin ich beim Punkt des Radars.
Natürlich muss ich das Radar auch irgendwie in mein Prog übernehmen...
Das Radar sucht ja nach Bewegungen...
Im Prog dachte ich mir, dass ich alles, was außerhalb des Bereichs des Roboters ist, immer wieder überprüfe, ob sich was getan hat.
Also dachte ich mir, dass ich "einfach" ein Foto von allem mache und das dann, mit einem später gemachten, vergleiche.

Ich hoffe man hats jetzt verstanden ... Soll irgendwie mit einem PixelGrapper gehen ...
würde mich über ein paar beispiele freuen! THX Stiewen

Sorry aber da steig ich aus.

MFG
BWA

Dabei schreibe ich ein Java-Prog, was das ganze ein wenig darstellen soll...
Nun bin ich beim Punkt des Radars.
Natürlich muss ich das Radar auch irgendwie in mein Prog übernehmen...

Nochmal: Du machst die Bildschirmausgabe in deinem eigenen Programm. Dann möchtest Du diese Ausgabe wieder aufnehmen um sie mit einer vorherigen zu vergleichen?

Ach Leute...
kann doch net so schwer sein ...  :'( :'( :'( :'(

Ich hab nun auch schon ein wenig geguckt und was rausgesucht, hier is mal mein Code dafür ... Aber irgendwie will es noch nicht gehen... die eingabe des Bildschirms ins BufferedImage scheint fehlzuschlagen:

    Label dummyObserver = new Label();

    // Bild vom Fenster erstellen
    Image image = window.createImage(20, 20);
    BufferedImage bImage = new BufferedImage(20, 20, BufferedImage.TYPE_INT_ARGB);
    bImage.getGraphics().setColor(image.getGraphics().getColor());
    bImage.getGraphics().drawImage(image, 0, 0, window);
    bImage.getGraphics().drawRect(0, 0, 2, 2);
    Color rgb = new Color(255, 255, 255);
    Color color = new Color(bImage.getRGB(15, 15));
   
    // Pixel des Bildes mit weiß vergleichen --> später dann mit den Pixeln des 2 Bildes...
    for ( int breite = image.getHeight(dummyObserver); breite > 0; breite-- ) {
      for ( int höhe = image.getWidth(dummyObserver) ; höhe > 0; höhe-- ) {
        if ( (rgb.getBlue() != color.getBlue()) & (rgb.getRed() != color.getRed()) & (rgb.getGreen() != color.getGreen()) ) {
          System.out.println("Der Pixel X:" + breite + " Y:" + höhe + " ist anders!" );
        }
      }
    } 

HALLO!!

Du hast ein paar denkfehler.

1. Am besten überprüfst du das ganze in einem Thread und dass in einer Schleife mit einem sleep.

2. du musst 2 Bilder machen, dass erste am Anfang der Schleife,dass dann machst du ein sleep, und dann "schießt" du noch ein bild, die beiden vergleichst du dann mir deiner oben gennanten Routine

Wenn der Code einigermassen so läuft wie ich mir das vorstelle dürfte dass kein Problem sein, dass du das zum laufen bringst.
ich werd schauen ob ich zeit finde, dass ich dir mal ein codefragment schicke

MFG
BWA

Hey, Denkfehler hab ich nicht... Ich wollte mit dem Source nur zeigen, was ich bisher herausgefunden habe... Und da das nur ein Test war, ist das schon mal ok ...

So, nun aber mal was erfreuliches: Nach wochenlangen Suchen habe ich was feines gefunden! Source:

class RobotRadar extends Thread {
  myMosro window;
  public RobotRadar ( myMosro window ) {
    this.window = window;
  }
  public void run (  ) {
    Color color;
    Image image1;
    BufferedImage bImage1;
    Image image2;
    BufferedImage bImage2;
    Color rgb1;
    Color rgb2;
    int höhe;
    int breite;
    Label dummyObserver = new Label();
    int h = 0;
    while ( true ) {
      image1 = window.createImage(window.getToolkit().getScreenSize().width, window.getToolkit().getScreenSize().height);
      breite = image1.getWidth(dummyObserver);
      höhe = image1.getHeight(dummyObserver);
      bImage1 = new BufferedImage(breite + 1, höhe + 1, BufferedImage.TYPE_INT_RGB);
      bImage1.getGraphics().setColor(image1.getGraphics().getColor());
      bImage1.getGraphics().drawImage(image1, 0, 0, window);
      try {
        Thread.sleep(1000);
      } catch ( InterruptedException ie ) {}
      image2 = window.createImage(window.getToolkit().getScreenSize().width, window.getToolkit().getScreenSize().height);
      bImage2 = new BufferedImage(breite + 1, höhe + 1, BufferedImage.TYPE_INT_RGB);
      bImage2.getGraphics().setColor(image2.getGraphics().getColor());
      bImage2.getGraphics().drawImage(image2, 0, 0, window);
      for ( ; breite > 0; breite-- ) {
        for (  ; höhe > 0; höhe-- ) {
          if ( breite <= window.locX + 55 && breite >= window.locX - 5 ) {
            breite = window.locX - 1;
          }
          if ( höhe <= window.locY + 55 && höhe >= window.locY - 5 ) {
            höhe = window.locY - 1;
          }
          rgb1 = new Color(bImage1.getRGB(breite, höhe));
          rgb2 = new Color(bImage2.getRGB(breite, höhe));
          if ( (rgb1.getBlue() != rgb2.getBlue()) & (rgb1.getRed() != rgb2.getRed()) & (rgb1.getGreen() != rgb2.getGreen()) ) {
            System.out.println("Der Pixel X:" + breite + " Y:" + höhe + " ist anders!" );
          }
        }
      }
    }
  }
}


Ich würde mich unglaublich freuen, wenn das mal einer testen würde... aber im Editor...

THX, Stiewen


« KLeins games selbst gemacht.bat Datei: "Ausruf" »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Classic Umgebung
Mit der Classic Umgebung ist es möglich, unter OS X ältere OS 9 Programme zu nutzen. Der Emulator sorgt für die nahtlose Integration. Siehe auch Apple....

Bildpunkte
Bilder, die von einem Monitor wiedergegeben werden, bestehen aus einzelnen Bildpunkten (Pixeln). Je höher die Pixelanzahl ist, desto genauer und besser kann das Bild...

Bildschirmschoner
Der eigentliche Sinn des Bildschirmschoners ist, den Bildschirm vor dem Einbrennen des Monitorbildes zu schützen.Während das bei neueren Monitoren (außer ...