Zum Forum springen
Java Hilfe
 
Benachrichtigungen
Alles löschen

[Geschlossen] Java Hilfe

5 Beiträge
2 Benutzer
0 Reactions
496 Ansichten

Hi,
ich möchte dem Open Source Client eines games eine Funktion hinzufügen, bin aber nicht sehr begabt in Java.
Die Klasse >Minimap< lädt die Minimaps vom http Server runter und setzt sie ingame zusammen. Ich möchte aber dass die minimaps auf der Festplatte in einem Ordner gespeichert werden sobald sie vom Client geladen werden. Hab jedoch gar keine Ahnung wie ich das machen soll :P

Die komplette Source gibts bei Bedarf auf http://github.com/Pacho/IRC-Extended

Zusätzlich hab ich das Problem beim compilen mit ant dass er jede Menge errors ( )
ausspuckt, aber bei anderen geht es scheinbar. Hab jedoch die neuste Java und ant version (heute runtergeladen).


4 Antworten
xirox
Beigetreten: 05.09.2006
         while(true) { 
             String grid; 
             synchronized(grids) { 
                 grid = null; 
                 for(String cg : loading) { 
                     grid = cg; 
                     break; 
                 } 
             } 
             if(grid == null) 
                 break;

             ...
         }

:heart: :heart: :heart:

also deine compile "errors" sind ja größtenteils nur warnings und keine fehler. das liegt daran, dass du (ihr) java4 syntax aber einen java6 compiler verwendet. in java4 gab es noch keine typisierungen/generics wie Vector<String>.

die wirklichen fehler (die ersten 4) sind ja alle derselbe. prüf mal, ob die klasse TextEntry wirklich ein attribut badchars hat und ob das nicht private ist.

zum speichern von daten auf die festplatte hilft dir die klasse java.io.FileWriter oder java.io.FileOutputStream, je nachdem ob du "normale" zeichen (FileWriter) oder bytes (FileOutputStream) speichern willst. wenn ich deine frage richtig verstehe, willst du bilddaten speichern, sprich bytes. demnach wäre java.io.FileOutputStream die richtige klasse. du instantiierst einfach ein objekt davon mit der gewünschten datei als argument und kannst dann mit hilfe der write(..) methoden deine daten da reinschreiben. die java-api-doc kennst du ja wohl?!


So?
FileOutputStream Bild = FileoutputStream(bildname);
Bild.write(img);
Wenn ich das an Zeile 100 hinzufüge?


xirox
Beigetreten: 05.09.2006

na so ähnlich... du kannst mit dem fileoutputstream nicht das gesamte objekt auf einmal speichern, sondern nur die bytes. du müsstest aus dem bufferedimage also erst die bilddaten in format eines byte-arrays ermitteln.

aber so schlecht war das gar nicht... hat mich nämlich darauf gebracht, dass es auch die klasse javax.imageio.ImageWriter gibt, der du das gesamte bild zum speichern übergeben kannst. demnach könntest du folgendes machen:

ImageWriter writer = ImageIO.getImageWritersBySuffix(dateiendung).next(); 
writer.setOutput (new MemoryCacheImageOutputStream (new FileOutputStream (bildname))); 
writer.write(img);

.
.
.
.
.
.

und damit es schließlich ganz einfach wird, hat sun das schon für dich so programmiert und in der klasse ImageIO versteckt. die verwendest du ja schon... da gibt es nämlich ne tolle methode static boolean ImageIO.write(RenderedImage im, String formatName, File output) throws IOException die du nur aufrufen musst........ und wenn es dich nicht interessiert, den ganzen kram den ich geschrieben hab, vergessen kannst.

-> Save Image Tutorial


Alles klar, das speichern hat schonmal geklappt, danke.
Allerdings macht es das Spiel mir schwieriger als ich dachte, die einzelnen Bilder sind nur 100x100 pixel anstatt wie ich dachte 1000x1000. Obwohl der Server die Maps an sich in 1000x1000er Schritten erstellt und aktualisiert scheint er sie wohl zu zerschneiden und einzeln zu speichern sodass der client nur die kleinen Stücke zusammensetzt.