ImageIO.write() macht Probleme

Status
Nicht offen für weitere Antworten.

bj99

Mitglied
Hallo,

Wollte über einen FileChooser ein Directory bestimmen um ein bild rein zu Speichern.

Leider Funktioniert das nur, wenn ich den Pfad vom FileChooser weglasse und das Bild ins Projekt gespeichert wird (Arbeite mit Eclipse und dieser Projekt-Ordner ist gemeint).

Hier der Code:
[JAVA=274]Action saveImgAction = new AbstractAction("Bild Speichern...") {
public void actionPerformed(ActionEvent e) {
int returnVal = fc.showSaveDialog(InfoPanelWindow.this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
fi.format("%04d", fcount);
File file = new File(fc.getSelectedFile().getPath()
+ "/Apfelmaennchen-" + sb.toString() + ".png");
fcount++;
sb.delete(0, sb.length());
int bw = 2560;
int bh = (int) Math.floor(2560 * (bildd.height / (double)bildd.width));
BufferedImage bild = new BufferedImage(bw, bh,
BufferedImage.TYPE_INT_ARGB);
Graphics2D bg = bild.createGraphics();
for (int x = 0; x < bw; x++) {
for (int y = 0; y < bh; y++) {
double cr = ((imgw) * ((double) x) / bw)
+ x2, ci = ((imgh) * ((double) y) / bh)
+ y2;
int p = (isj) ? calcpoint(kjr, kji, cr, ci)
: calcpoint(cr, ci);
bg.setColor(calccolor(p));
bg.fillRect(x, y, 1, 1);
}
}
try {
ImageIO.write(bild, "png", file);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
};[/code]

So gibt es immer:
Code:
java.io.FileNotFoundException: /Users/sebikeller/Schreibtisch/Apfelmaennchen-0000.jpg (No such file or directory)
	at java.io.RandomAccessFile.open(Native Method)
	at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
	at javax.imageio.stream.FileImageOutputStream.<init>(FileImageOutputStream.java:53)
	at com.sun.imageio.spi.FileImageOutputStreamSpi.createOutputStreamInstance(FileImageOutputStreamSpi.java:37)
	at javax.imageio.ImageIO.createImageOutputStream(ImageIO.java:393)
	at javax.imageio.ImageIO.write(ImageIO.java:1520)
	at Apfelmann$InfoPanelWindow$4.actionPerformed(Apfelmann.java:300)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6348)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6113)
	at java.awt.Container.processEvent(Container.java:2085)
	at java.awt.Component.dispatchEventImpl(Component.java:4714)
	at java.awt.Container.dispatchEventImpl(Container.java:2143)
	at java.awt.Component.dispatchEvent(Component.java:4544)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
	at java.awt.Container.dispatchEventImpl(Container.java:2129)
	at java.awt.Window.dispatchEventImpl(Window.java:2475)
	at java.awt.Component.dispatchEvent(Component.java:4544)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at javax.imageio.ImageIO.write(ImageIO.java:1529)
	at Apfelmann$InfoPanelWindow$4.actionPerformed(Apfelmann.java:300)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6348)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6113)
	at java.awt.Container.processEvent(Container.java:2085)
	at java.awt.Component.dispatchEventImpl(Component.java:4714)
	at java.awt.Container.dispatchEventImpl(Container.java:2143)
	at java.awt.Component.dispatchEvent(Component.java:4544)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
	at java.awt.Container.dispatchEventImpl(Container.java:2129)
	at java.awt.Window.dispatchEventImpl(Window.java:2475)
	at java.awt.Component.dispatchEvent(Component.java:4544)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

es funktioniert nur, wenn ich es zu folgendem ändere:
[JAVA=279]File file = new File("Apfelmaennchen-" + sb.toString() + ".png");[/code]

wie kann ich es machen, dass ich doch überall wo ich will speichern kann??

cu
 
Zuletzt bearbeitet:

Ark

Top Contributor
Das Problem liegt nicht in ImageIO, sondern in deiner Verwendung von File, insbesondere File.getPath(). Letzteres gibt nämlich den Pfad zur ausgewählten Datei an, und diese Datei muss nicht zwingend ein Ordner sein, auch wenn es getPath() heißt. ;)

Schreib besser so was:
[java=279]File file = new File(fc.getSelectedFile(), "Apfelmaennchen-" + sb + ".png");[/code]
Ich hoffe zumindest, dass es so funktioniert, wie ich denke. ^^

Wenn nicht, musst du getSelectedFile() mit isDirectory() prüfen und danach deine Zuweisung tätigen.

Ark
 

bj99

Mitglied
Das mit dem Ordner oder nicht erledigt sich bereits vorher, da ich mit
Java:
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
alles sicher stelle! es will trotzdem nicht!!!

cu
 

eRaaaa

Top Contributor
hi,

was passiert wenn du das ausprobierst? :

Java:
		File file = new File(fc.getSelectedFile().getAbsolutePath()
				+ System.getProperty("file.separator") + "Apfelmaennchen-"
				+ sb.toString() + ".png");

was ich allerdings garnicht verstehe, ist die FileNotFoundException
java.io.FileNotFoundException: ......Apfelmaennchen-0000.jpg
<-- wo kommt das .jpg her? :D
 

bj99

Mitglied
hi,

was passiert wenn du das ausprobierst? :

Java:
		File file = new File(fc.getSelectedFile().getAbsolutePath()
				+ System.getProperty("file.separator") + "Apfelmaennchen-"
				+ sb.toString() + ".png");

was ich allerdings garnicht verstehe, ist die FileNotFoundException
<-- wo kommt das .jpg her? :D

Hab das Ausprobiert! geht auch nicht!

Code:
java.io.FileNotFoundException: /Users/sebikeller/Schreibtisch/Apfelmännchen-0000.png (No such file or directory)
	at java.io.RandomAccessFile.open(Native Method)
	at java.io.RandomAccessFile.<init>(RandomAccessFile.java:212)
	at javax.imageio.stream.FileImageOutputStream.<init>(FileImageOutputStream.java:53)
	at com.sun.imageio.spi.FileImageOutputStreamSpi.createOutputStreamInstance(FileImageOutputStreamSpi.java:37)
	at javax.imageio.ImageIO.createImageOutputStream(ImageIO.java:393)
	at javax.imageio.ImageIO.write(ImageIO.java:1520)
	at Apfelmann$InfoPanelWindow$1$1.run(Apfelmann.java:417)
	at java.lang.Thread.run(Thread.java:637)
Exception in thread "Bild speichern" java.lang.NullPointerException
	at javax.imageio.ImageIO.write(ImageIO.java:1529)
	at Apfelmann$InfoPanelWindow$1$1.run(Apfelmann.java:417)
	at java.lang.Thread.run(Thread.java:637)
und nun is png! :) Hab es eben zuerst mit jpg versucht!!!
also geht auch nicht!!! Was mach ich denn nun???
cu
 

bj99

Mitglied
Weiss nun warum es nicht geht!

Da ich unter Mac OS X arbeite! heisst der Ordner Schreibtisch eigentlich Desktop, wird einfach lokalisiert angezeigt! Wenn ich also nun was nach Schreibtisch schreiben will, muss ich es durch Desktop ersetzen, dann gehts! Java bekommt aber das lokalisierte Schreibtisch zurück!
weiss einer wie ich das Hinkriege???

cu
 

bj99

Mitglied
http://www.java-forum.org/allgemeine-java-themen/40516-speichert-man-dateien-pfad-link-unix.html

Da hätte auch die Forensuche geholfen!

File.getCannonicalPath()

sollte das ganze auflösen können.

Leider Nein! Habs auch schon ausprobiert!
Das Problem sind die Lokalisierte Ordnername, wie Schreibtisch usw... die Werden von getCannonicalPath() nicht zu den nicht Lokalisierten um gewandelt!
Hab mir nun ne Klasse geschrieben, die das aber macht!
cu
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T ImageIO.read -> Can`t read input file Allgemeine Java-Themen 11
G ImageIo ignoriert Transparenz in PNGs Allgemeine Java-Themen 3
T JFreeChart Diagramm speichern - Problem mit ImageIO nach Projektexport Allgemeine Java-Themen 3
E ImageIo mit png und alpha Allgemeine Java-Themen 4
F ImageIO cant create InputStream Allgemeine Java-Themen 9
G Problem im ImageIO und JAR Allgemeine Java-Themen 2
A Probleme mit ImageIO.read( . ) Allgemeine Java-Themen 12
S NoClassDefFoundException - ImageIO.read - Applet Allgemeine Java-Themen 3
W Ausgabequalität von ImageIO Allgemeine Java-Themen 5
S Problem mit ImageIO Allgemeine Java-Themen 10
C ImageIO die read-Methode liefert mir ein null- Wert zurück Allgemeine Java-Themen 10
Aruetiise Methoden write() schreibt nicht alles Allgemeine Java-Themen 4
Dechasa Input/Output Write into File Allgemeine Java-Themen 2
T Outputstream write() gets blocked using RXTX to communicate with HC-05 BT Module Allgemeine Java-Themen 10
1 Check read/write permission for file Allgemeine Java-Themen 4
J write / read Problem Allgemeine Java-Themen 9
R Welche Exception bei write() nehmen Allgemeine Java-Themen 7
W BufferedWriter.write() schreibt nicht Allgemeine Java-Themen 3
berserkerdq2 Jemand einen Tipp wie man ein Javafx-Hintergrund "dynamisch" macht Allgemeine Java-Themen 3
N Division macht Probleme Allgemeine Java-Themen 14
berserkerdq2 IJVM, ich tue auf meinen Stack 100 und 120 rein, danach subtrahiere ich, macht die Maschine 100-120 oder 120-100? Allgemeine Java-Themen 8
OnDemand Anzeigen was eine Applikation macht Allgemeine Java-Themen 1
H Swing HashMap zu Tabelle macht mir Probleme Allgemeine Java-Themen 4
M 4 Gewinnt KI macht nicht, was sie soll.. Allgemeine Java-Themen 1
P Eclipse Projekt anlegen macht Problem Allgemeine Java-Themen 1
WetWer Was bedeutet/macht ein Exit-Code Allgemeine Java-Themen 1
O OOP Wie macht man das am besten OO? Allgemeine Java-Themen 8
Thallius Macht das Sinn? Allgemeine Java-Themen 30
F Java Native/Shared Library (.so) laden macht Probleme Allgemeine Java-Themen 3
X Was macht folgender Code!? Allgemeine Java-Themen 6
J Doppelte Buchstaben löschen - letztes Wort macht er nicht Allgemeine Java-Themen 2
J if else Anweisung macht nicht was es soll. Wieso? Allgemeine Java-Themen 10
M Google App Engine macht Probleme Allgemeine Java-Themen 4
GilbertGrape Warum macht man "if(true)" Allgemeine Java-Themen 18
C Klassen Was macht diese Java-Mathe-Klasse? Allgemeine Java-Themen 2
S Erste Schritte Exception beendet Schleife nicht - Methode macht trotz throw weiter? Allgemeine Java-Themen 9
S Javadoc 3d einbinden macht probleme Allgemeine Java-Themen 10
B Unix-Timestamp > Date macht Probleme. Allgemeine Java-Themen 3
T Ausdruck mit pdfBox macht Probleme Allgemeine Java-Themen 2
B jar File macht probleme wegen einer Methode! Allgemeine Java-Themen 5
alderwaran jaxb xsd schema, min/maxoccurs macht was? Allgemeine Java-Themen 7
S AWT StringBuffer macht nicht, was ich erwarte Allgemeine Java-Themen 2
E Timer class macht einfach garnichts :/ Allgemeine Java-Themen 6
G Vokabelprogramm - Wer macht mit? Allgemeine Java-Themen 58
S Anschauen was der Compiler macht..? Allgemeine Java-Themen 5
I Was macht static { ... } ? Allgemeine Java-Themen 8
N Für welche Art von Berechnungen macht JCUDA Sinn? Allgemeine Java-Themen 12
P JMF macht mich verrückt Allgemeine Java-Themen 3
R PDF Formular mit JPod ausfüllen macht Probleme Allgemeine Java-Themen 4
G Wie kriegt Klasse2 die Info, was Klassse1 gerade "macht Allgemeine Java-Themen 7
Escorter was macht createHorizontalGlue() Allgemeine Java-Themen 2
T Serialisierung: Wie macht RMI das so schnell? Allgemeine Java-Themen 14
J Was macht dieser Code? Allgemeine Java-Themen 13
S Was macht der Java-Verifier? Allgemeine Java-Themen 4
T Problem, warum macht der das so(finde kein titel.) Allgemeine Java-Themen 3
I Irre Website-Wie macht man sowas? Allgemeine Java-Themen 6
U if Abfrage macht etwas falsch Allgemeine Java-Themen 2
G javadoc macht probleme Allgemeine Java-Themen 2
A equals() macht nicht, was es soll Allgemeine Java-Themen 4
B Vergleichen von arrays macht Probleme Allgemeine Java-Themen 2
M JBoss macht Probleme Allgemeine Java-Themen 6
P Wie macht Sun Gewinn mit Java? Allgemeine Java-Themen 3
Maximum '.' in String ersetzen macht Schwierigkeiten Allgemeine Java-Themen 2
T Klassen samt Methoden aus Jar-Archiv laden macht Problem Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben