Was ist der richtige Pfad für das Toolkit.Funktion " getImage()?
Muss ich ein Bild hochladen-Datei und erzeugen Sie eine Miniaturansicht für die Datei hochgeladen in meinem JSF-Webapplikation. Das ursprüngliche Bild wird auf dem server gespeichert in /home/myname/tomcat/webapps/uploads
, während die Miniaturansicht gespeichert in /home/myname/tomcat/webapps/uploads/thumbs
. Ich bin mit der thumbnail-generator-Klasse kopiert habe ich von philreeve.com.
Habe ich erfolgreich hochgeladen, die Datei mit Hilfe von BalusC. Aber mit Toolkit.getImage()
kann ich nicht auf das Bild.
Benutzte ich die hochgeladene Datei den absoluten Pfad, etwa so:
inFilename = file.getAbsolutePath();
Den relevanten code aus der thumbnail-generator ist:
public static String createThumbnail(String inFilename, String outFilename, int largestDimension) {
...
Image inImage = Toolkit.getDefaultToolkit().getImage(inFilename);
if (inImage.getWidth(null) == -1 || inImage.getHeight(null) == -1) {
return "Error loading file: \"" + new File(inFilename).getAbsolutePath() + "\"";
}
...
}
Da ich mich schon mit dem absoluten Pfad, ich verstehe nicht, warum es nicht funktioniert. Ich habe auch schon die folgenden Werte für inFilename
, aber ich bekomme immer die Fehlermeldung "Fehler beim laden der Datei...".
/home/myname/tomcat/webapps/uploads/filename.ext
/uploads/filename.ext
Aber ich habe mir das Verzeichnis und die image - ist es. (Ich hochgeladen mit /home/myname/tomcat/webapps/uploads/filename.ext
, und es funktioniert.) Was ist der richtige Pfad für das Bild in das Verzeichnis? Danke.
Update
Bekam ich den code für die Arbeit mit:
Image inImage = ImageIO.read(new File(inFilename));
Ich verstehe immer noch nicht warum Toolkit.getImage()
funktioniert nicht obwohl.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie sicher, es ist eine JPEG-Datei? Verwenden Sie ein Bild-viewer, um sicherzustellen, dass nichts schlimmes passiert ist, um die Datei beim hochladen (oder war es ein Bild, um mit zu beginnen).
Nutzen Sie auch
new File(inFilename).exists()
um sicherzustellen, dass der Pfad korrekt ist. Auch ich schlage zu druckennew File(inFilename).getAbsolutePath()
Fehlermeldungen, weil relative Pfade können Sie verletzen.Sagte, der rest des Codes korrekt aussieht.
.jpg
war nur ein Beispiel, sorry für das Missverständnis. Ich bin eigentlich immer der Datei-suffix. Ich habe versucht, die Anzeige der Bilder im browser:http://***:8082/uploads/filename.jpg
, und es richtig angezeigt wird. Ich änderte den code, danke dafür. Ich werde weiter an dem problem zu arbeiten, aber ich habe das Gefühl, dassgetAbsolutePath()
in handliches kommen. 🙂ImageIO.read()
stattTookit.getImage()
, und es funktioniert. Vielen Dank für den absoluten Pfad Vorschlag, ich habe ehrlich gesagt konnte nicht daran gedacht haben, mich mit meiner eingerosteten Java-Kenntnisse. Es hätte hässlich, zu fest die Lage. Vielen Dank für die Zeit. 🙂ImageIO.read()
undToolkit.getImage()
meine (wilde) Vermutung ist, dassToolkit.getImage()
funktioniert nur für applet-Typen? :/Toolkit
ist für die desktop-UI. Swing verwendet es überall.Das problem ist, dass
Toolkit.getImage()
nicht zurück, wird das Bild sofort. Das Problem ist gut beschrieben in dieser bug-report, einen relevanten Auszug davon ist hier:Fand ich, dass die Antwort auf diese Frage gut funktioniert:
Image image = new ImageIcon(this.getClass().getResource("/images/bell-icon16.png")).getImage();
Kann Es sein, Zugriffsrechte problem? Sind Sie sicher, dass Ihr script die Rechte zum Lesen oder anzeigen von Datei?
main()
Methode (die wiederum einfacher zu testen/Debuggen, das ganze problem, nur als kleiner Hinweis 😉 )createThumbnail()
Methode von einemManagedBean
oder dass die webapp URL muss die port-Nummer oder so etwas. Gyar. 🙁 Ich denke, ich werde versuchen, die Kodierung eines Java-Anwendung... Danke für die Anregung. 🙂