ImageObserver, Bild dynamisch erzeugen und Speichern

  • Themenstarter Themenstarter Malu
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

Malu

Gast
Hi,
Ich will in meine programm bestimmte informationen in einem jpeg zusammenstellen und auf dem rechner speichern.
Meine Idee bis jetzt ist das ich einfach ein BufferedImage erzeuge:
BufferedImage image= new BufferedImage(372,362,BufferedImage.TYPE_INT_RGB);
dann eine instanz von Graphics2D aus dem image, in die ich dann die Informationen zeichne.
dann speicher ich das ganze irgendwie ab(weiß noch nicht wie -.-).
Nun aber Meine Frage...
1. Gibt es eine bessere Methode?
2. Wenn ich in die instanz von Graphics2D images reinzeichen will, brauch ich ein ImageObserver...reicht es wenn ich null angebe? ich will die datei ja nicht anzeigen(kann mich nur noch erinnern das bei Componenten this reichte da sie es bereits implementieren)

Hoffe das mir jemand die Fragen beanworten kann...
egal ob ja oder neine, ich danke jedem hier der sich ne minute zeit nimmt drüber nachzudenken ^^
 
Was sind das denn für Informationen? Wie willst du sie schreiben?

Fürs speichern: ImageIO#write
 
ja und wie willst du die Darstellen? Mit Graphics?

Code:
Graphics2D g2D = buffimage.createGraphics();
// Zeug mit Graphics zeichnen
g2D.dispose();

und dann speichern 😀 . Hoffe hab dich richtig verstanden.
 
genau, webei ich die halt niergens anzeigen will, sondern einfach erstellen und speichern...
 
ah ok hätt ich fast übersehen *G*,
dann bleibt eigentlich nur noch die zweite und größte Frage
2. Wenn ich in die instanz von Graphics2D images reinzeichen will, brauch ich ein ImageObserver...reicht es wenn ich null angebe? ich will die datei ja nicht anzeigen(kann mich nur noch erinnern das bei Componenten this reichte da sie es bereits implementieren)
 
sry für doppelpost aber *schieb*

ich hab doch noch eine frage....
kann ich irgendwie den Font size im graphic setzten? weil ich hab mir die koords jetzt nur für eine bestimmte schrifgröße errechnet...
ich hab bereits etwas wie
graphics.setFont(javax.awt.Font.createFont(12,graphics.getFont()));
versucht aber das scheint nicht nur komisch auszusehen sondern auch zu sein ^^
 
Ich glaube das ging in etwa so:
Code:
graphics.setFont( new Font("Schriftart",Font.PLAIN,12) );
 
:/ ok danke...nur das problem ist woher ich wissen soll welche Schriftarten das System hat, da es ja Platform unabhängig sein soll...gibt es da java eigene, also die mit der jre mitgeliefert werden?
 
Ich würde "Serif" nehmen, da wird soviel ich weiss immer etwas gefunden zu.

Code:
new Font("Serif", Font.PLAIN, 12)  // Logical font name is mapped 
                                   // to Times New Roman by 
                                   // font.properties file
 
Java hat vordefinierte Schrifttypen, die überall gehen. z. b. "dialog" oder "monospaced". Außerdem kannst du dir alle verfügbaren Schriften des Systems ausgeben lassen. Da schauste dann ob die, die du möchtest dabei is, wenn net machste halt ne Java-eigene.
 
Malu hat gesagt.:
graphics.setFont(graphics.getFont().deriveFont(12.0f));
...
ob dann die unabhängigkeit gewahrt ist

joa ist sie, ansonsten siehe mein post weiter oben (könnt ja sein dass du ihn übersehen hast, da wir ziemlich zeitgleich gepostet haben 😉 )
 
siehe edit ^^

naja hab nun ein anderes problem...und zwar werden die images die ich in das graphics zeichne mal angezeigt werden und mal nicht :/ ich erzeuge im mom jedes bild 5mal wo wie gesagt ca 2mal alle bilder da sind und 3mal alle nicht -.-
 
Sicher dass die Bilder komplett geladen sind? Schonmal mit dem MediaTracker versucht bzw. ImageIO#read ?
 
:/ hab mir mal den MediaTracker angeschaut und er wäre eigentlich genau das was ich brauche, wäre da nicht das problem das er n component braucht auf dem das image angezeigt wird das mit dem ImageIO#read schnall ich net...wie meinste das?
 
hö? Nö, eigentlich net. Net das wir aneinander vorbeireden, du willst ja schon Bilder laden, die sich auf deiner Festplatte befinden!?
 
ja genau:

MediaTracker(Component comp)
Creates a media tracker to track images for a given component.

da muss ich halt n component angeben...keke ich hab keins pack also null rein...
das problem...er fragt ab ob das image in der componente voll angezeigt wird..wegen null bekomm ich dann da n nullpointer...:/
 
1. Möglichkeit

new MediaTracker(new JComponent());

2. Möglichkeit

buffimage = ImageIO.read("pfad/zur/datei.jpg");
 
ok habs mit der Zweiten möglichkeit gemacht die ich jetzt schnalle dan namen der Klasse an zuschaun hat dabei net geschahdet ^^

nu schnall ich aber die erste möglichkeit net ^^...ist Component net Abstract?
 
ähm ... ja ... sry. Natürlich ist Component abstrakt. Hab da n J verschluckt 😳 . Ich bessers ma aus.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben