javax.imageio.ImageIO write methode

Status
Nicht offen für weitere Antworten.

Fridolin

Bekanntes Mitglied
Hallo ich bins mal wieder,
wisst ihr wie ich ein BufferedImage in eine jpg Datei mit javax.imageio schreiben kann?

Bei mir sieht das so aus allerdings schreibt er immer nur ein leeres Bild in die Datei, weiß wer warum
also ich probiere auf das Graphics2D des BufferedImages(createGraphics) in das Image zu zeichnen
und wenn das abgeschlossen ist, das Bild in die Datei zu schreiben

Code:
if(anzeige == null)
  	{
  	anzeige = new BufferedImage(356, 325, BufferedImage.TYPE_INT_ARGB);	
  	hallo = anzeige.createGraphics();
  	hallo.setColor(Color.blue); 
  	}

Code:
try
			{
			ImageIO.write(anzeige, "jpg", new File("C:\\Dokumente und Einstellungen\\michael\\Desktop\\Anzeige.jpg"));	
			}
			
			catch(IOException event)
			{
			event.printStackTrace();
			}

Warum ist das BufferedImage leer, ich zeichne doch darauf?

lg Fridolin
 
B

Beni

Gast
Hier zeichnest du doch gar nichts?
Code:
if(anzeige == null)
     {
     anzeige = new BufferedImage(356, 325, BufferedImage.TYPE_INT_ARGB);   
     hallo = anzeige.createGraphics();
     hallo.setColor(Color.blue);
     }

Da fehlt noch z.B. sowas:
Code:
hallo.fillOval( 0, 0, 100, 100 );
 
R

Roar

Gast
Fridolin hat gesagt.:
Code:
if(anzeige == null)
  	{
  	anzeige = new BufferedImage(356, 325, BufferedImage.TYPE_INT_ARGB);	
  	hallo = anzeige.createGraphics();
  	hallo.setColor(Color.blue); 
  	}


Warum ist das BufferedImage leer, ich zeichne doch darauf?

lg Fridolin

mit dem code da oben zeichnest du nichts :? :D

setz noch ein hallo.drawString("Hello World",100,100); danach. wenns dann nicht geht liegts an was anderem :-/

edit: arrrgh.. böses Beni. wer hat dir das erlaubt? :noe:
 

Fridolin

Bekanntes Mitglied
meinst du sowas? Ich hab eine IllegalArgumentException: RenderedImage = null!
Das RenderedImage ist die variable anzeige(Man kann auch ein BufferedImage übergeben)
Wieso geht das nicht?

Code:
public void paint(Graphics g)
	{
		if(nflag == 5)
		{
		try
			{
			ImageIO.write(anzeige, "jpg", new File("C:\\Dokumente und Einstellungen\\michael\\Desktop\\Anzeige.jpg"));	
			}
			
			catch(IOException event)
			{
			event.printStackTrace();
			}
			
			nflag = 10;
		}
		
		if(nflag == 0)
		{
		hallo.drawRect(boardx,boardy,blocksizex,blocksizey);
		hallo.fillRect(boardx,boardy,blocksizex,blocksizey);
		}
		
		else if(nflag == 1)
		{
		hallo.drawRect(boardx,boardy,blocksizex,blocksizey);
		hallo.fillRect(boardx,boardy,blocksizex,blocksizey);
		hallo.setColor(Color.red);
		hallo.drawArc(boardx,boardy + 4, 7, 7, 0, -340);
		}
		
		else if(nflag == 2)
		{
		hallo.drawRect(boardx,boardy,blocksizex,blocksizey);
		hallo.fillRect(boardx,boardy,blocksizex,blocksizey);
		hallo.setColor(Color.pink);
	    hallo.drawOval(boardx + 1,boardy + 3,blocksizex - 2,blocksizey - 6);
		hallo.fillOval(boardx + 1,boardy + 3,blocksizex - 2,blocksizey - 6);
		}
		
		else if(nflag == 3)
		{
		hallo.drawRect(boardx,boardy,blocksizex,blocksizey);
		hallo.fillRect(boardx,boardy,blocksizex,blocksizey);
		hallo.setColor(Color.white);
	    hallo.drawOval(boardx + 1,boardy + 4,blocksizex - 2,blocksizey - 8);
		hallo.fillOval(boardx + 1,boardy + 4,blocksizex - 2,blocksizey - 8);
		}
		
		else if(nflag == 4)
		{
		hallo.drawRect(boardx,boardy,blocksizex,blocksizey);
		hallo.fillRect(boardx,boardy,blocksizex,blocksizey);
		hallo.setColor(Color.yellow);
		hallo.drawArc(boardx,boardy + 4, 7, 7, 0, -340);
		hallo.fillArc(boardx,boardy + 4, 7, 7, 0, -340);
		boardx2 = boardx;
		boardy2 = boardy;
				}			
	}
 
B

Beni

Gast
Also wenn schon müsstest du zuerst zeichnen, und dann speichern...

Aber wieso machst du das in der Paint-Methode :bahnhof:
... die paint-Methode ist nur zum zeichnen einer Component da... (dein Programm ruckelt wahnsinnig, nicht wahr? :D )

Wir wollten eigentlich schreiben, dass du dein Bild irgendwie so aufbauen solltest:
Code:
if(anzeige == null){
     anzeige = new BufferedImage(356, 325, BufferedImage.TYPE_INT_ARGB);   
     hallo = anzeige.createGraphics();
     hallo.setColor(Color.blue);
     hallo.drawLine( 10, 10, 500, 300 );  // hier was zeichnen.
}

und es anschliessend speichern.
 

Fridolin

Bekanntes Mitglied
Roar, cool bei deinen Interessen steht: Programmierung, Webdesign, Grafikdesign(!)
Da könntest du mir doch sicher helfen?
Ich weiß auch schon warum da ich zuerst von der Datei auslese und nie gezeichnet wird da ich nflag schon
am ende der letzten zeile auf 5 setze aber das war bestimmt nicht das letzte problem ich komme wieder
 
R

Roar

Gast
Fridolin hat gesagt.:
Roar, cool bei deinen Interessen steht: Programmierung, Webdesign, Grafikdesign(!)
Da könntest du mir doch sicher helfen?

öh wobei? Das bedeutet eigentlich dass ich recht gerne mit meinem Photoshop rumspiele...
 

Fridolin

Bekanntes Mitglied
Ich hab eine NullPointerException und weiß nicht wieso
die lautet sun.awt.RepaintArea.paint(RepaintArea:177)
Wisst ihr was das heißt, in der update methode zeichne ich nur etwas
das es schon gibt und das alle 10ms und wenn ich die zeit auf 1000ms stelle
ändert sich auch nichts
 
B

Beni

Gast
Ich hab eine NullPointerException und weiß nicht wieso
Das soll passieren :wink:
Normalerweise ist eine Variable null, die nicht null sein sollte.

Ist eine Variable null?

Was ist denn der ganze Stacktrace des Fehlers?
 

Fridolin

Bekanntes Mitglied
java.lang.NullPointerException
at sun.awt.RepaintArea.paint(RepaintArea.java:177)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
at java.awt.Component.dispatchEventImpl(Component.java:3678)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

Ich muss das alles immer mit der Hand klopfen gibts da eine einfachere Methode?

Ich kann jetzt zumindest sagen warum die NullPointerException kommt
Mein Kontext vom Bild stimmt nicht oder bei der Erzeugung vom BufferedImage hab ich was falsch gemacht

Kann ich auf eine Graphics2D Membervariable auch innerhalb von paint zugreifen?
 
B

Beni

Gast
Der sieht ja lustig aus :?

Kommt der immer wieder vor, oder eher zufällig?

Falls du Multithreading benutzt, wenn man was an der GUI verändert, wird in der API empfohlen, die Methode "SwingUtilities#invokeAndWait" zu benutzen.

Ansonsten (ich wag es kaum zu sagen), wenn ich solche Fehler hatte, kehrte ich sie einfach unter den Teppich (die haben ja meist keinen grossen Einfluss auf das Progi).
 

Fridolin

Bekanntes Mitglied
Stimmt Beni es wird so auch alles auf den Bildschirm gezeichnet aber abspeichern kann ichs
nicht mehr da irgendwas null ist Ich probiere das mit einer Graphics und einer Graphics2D Variable
vom BufferedImage auf beide wird gezeichnet eine gib ich aus eine will ich mit ImageIO.write(RenderedImage, String formatname, File output) speichern wobei das RenderedImage auch ein BufferedImage sein kann weil das von RenderedImage erbt oder so und nicht null sein darf sonst hat man eine IllegalArgumentException der formatname ein Format für die zu speichernde datei jpg, txt, gif und ein File mit Pfadangabe

Diesmal hab ich in der API nachgeschaut mhmm
Ich verändere noch gar nichts an der GUI ich zeichne nur auf ein JFrame auf dessen Graphics Kontext(mit Graphics name = getGraphics() ) und einmal auf ein Graphics2D des BufferedImage(mit BufferedImage anzeige = anzeige.createGraphics() ) und auf das eine kann ich in der selben Methode zeichnen und noch dazu am Bildschirm
ohne Fehler anzeigen und auf das andere nicht wahrscheinlich wird bei der Erzeugung vom BufferedImage irgendwas nicht stimmen

Und ich ruf die paint methode einmal mit dem Graphics auf und das Graphics2D benutze ich so in der Methode
da es eine Membervariable ist
Weißt du eine andere methode zum abspeichern(in einer Bilddatei) von selbsterstellten Bildern(mit privat
deklarierter Graphics Membervariable) auf JFrames?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
HolyFUT Javax Websocket API implementieren Java Basics - Anfänger-Themen 14
nbergmann Wo ist javax.swing.JOptionPane gespeichert? Java Basics - Anfänger-Themen 4
O Problem mit SOAP / javax.xml importieren Java Basics - Anfänger-Themen 7
J javax.servlet.ServletException: Name is null Java Basics - Anfänger-Themen 7
N javax swing JOptionPane Hilfe Java Basics - Anfänger-Themen 3
pkm javax.script.ScriptException bei der ScriptEngine Java Basics - Anfänger-Themen 9
P JDK installieren javac behauptet Javax.swing existiert nicht Java Basics - Anfänger-Themen 8
B javax.ejb.Timer wieder starten? Java Basics - Anfänger-Themen 0
R Klassen Javax.vecmath.* Java Basics - Anfänger-Themen 5
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
M Javax.swing - Timer(2 Button) Java Basics - Anfänger-Themen 17
T eclipse findet javax nicht Java Basics - Anfänger-Themen 4
N Erste Schritte import javax.media.3d....; //Fehlermeldung: cannot be resolved Java Basics - Anfänger-Themen 10
timbeau Javax.Mail: Check this out Java Basics - Anfänger-Themen 10
c_sidi90 javax.exe beenden nach Programmende Java Basics - Anfänger-Themen 10
L javax.xml.transform.Source Java Basics - Anfänger-Themen 6
StrikeTom Javax.mail frage(zu code) Java Basics - Anfänger-Themen 17
N javax.swing.JOptionPane einbauen? Java Basics - Anfänger-Themen 9
D package javax.comm does not exist Java Basics - Anfänger-Themen 5
kulturfenster Problem mit javax.swing.Timer Java Basics - Anfänger-Themen 2
C javax.print.DocPrintJob Java Basics - Anfänger-Themen 17
G Fehler beim builden javax...... Java Basics - Anfänger-Themen 4
J Servlet Interface javax.servlet.Servlet Java Basics - Anfänger-Themen 2
? Konsolenprogramm hat Problem mit java.awt oder javax.swing Java Basics - Anfänger-Themen 7
G NoClassDefFoundError: javax/xml/stream/XMLStreamException Java Basics - Anfänger-Themen 23
A Finde javax.servlet.* nicht Java Basics - Anfänger-Themen 6
M Fehler: package javax.portlet does not exist Java Basics - Anfänger-Themen 2
V Serialisieren einer ShortMessage (javax.sound.midi) Java Basics - Anfänger-Themen 5
alexpetri javax.xml.stream.* nicht gefunden Java Basics - Anfänger-Themen 3
A java.awt und javax.swing verschwunden Java Basics - Anfänger-Themen 2
S import javax.image.io.*; funktioniert nicht Java Basics - Anfänger-Themen 28
L getDuration() von einem javax.media.player objekt problem. Java Basics - Anfänger-Themen 3
K Problem mit javax/servlet/http/HttpServletRequest.java Java Basics - Anfänger-Themen 2
E Wo bekomme ich das javax.swing.* package her? Java Basics - Anfänger-Themen 3
G import javax.servlet cannot be resolved Java Basics - Anfänger-Themen 1
N Probleme mit import von javax.servlet.* Java Basics - Anfänger-Themen 3
B Wo finde ich die Klasse javax.sound.sampled.AudioSystem Java Basics - Anfänger-Themen 7
R Javax.mail wird nicht gefunden Java Basics - Anfänger-Themen 2
G wie bekomme ich das javax.jws.* package in den JBuilder ? Java Basics - Anfänger-Themen 7
J javax.comm-API kompilieren Java Basics - Anfänger-Themen 12
C wo ist mein javax.mail? Java Basics - Anfänger-Themen 2
L JavaMail: javax.mail wird nicht gefunden Java Basics - Anfänger-Themen 2
B javax entpacken - aber wohin? Java Basics - Anfänger-Themen 2
S Bild in Jar-File mit ImageIO Java Basics - Anfänger-Themen 50
H Input/Output ImageIO.load frisst meinen ganzen Speicher weg! Java Basics - Anfänger-Themen 4
R Input/Output ImageIO kommt mit pic_url nicht klar Java Basics - Anfänger-Themen 10
R ImageIO.read Fehler Java Basics - Anfänger-Themen 4
M Probleme mit ImageIO Java Basics - Anfänger-Themen 11
M Pfad angabe bei getRescource und ImageIO.write Java Basics - Anfänger-Themen 4
B Exception bei ImageIO wegen sonderzeichen Java Basics - Anfänger-Themen 11
G Lesefehler von ImageIO! Java Basics - Anfänger-Themen 7
G ImageIO.write() Java Basics - Anfänger-Themen 2
D ImageIO metadata auslesen aus png image Java Basics - Anfänger-Themen 2
I ImageIO.write(bild, "was gibts da alles", pfad); Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben