Bild URL über ImageIO.read

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ein Bild welches unter einer bestimmten URL erreichbar ist, kann ich ja über die Klasse ImageIO.read(url) als stream einlesen. Problematisch wird es nur, wenn die URL zwar "wohlgeformt", d.h. syntaktisch korrekt ist der Inhalt jedoch nicht ermittelt werden kann, z.B. weil dort gar kein Bild liegt. In diesem Falle würde ich ja eine Exception bekommen.

Wie kann ich prüfen, ob ein bestimmter Inhalt unter der URL verfügbar ist? Ich will eine Methode saveImage(Menge von URLs)
implementieren, welche eine Menge von URLs als Parameter bekommt. Falls ein Bild unter einer bestimmten URL nicht verfügbar ist, bekomme ich eine Exception und kann folglich nicht die anderen Bilder laden. Falls ich z.B. drei URLs habe. Die erste geht nicht, d.h. liefert keinen Inhalt, die anderen beiden funktionieren jedoch schon. Im Falle der Exception würde ich schon bei URL "rausfliegen", ohne Chance die anderen URLs zur prüfen bzw. die Bilder von da zu laden.

Ich hoffe ich konnte mich halbwegs klar ausdrücken :) Ich will also, falls eine URL nicht geht trotzdem im Programm mit meiner Bildspeicherung fortfahren
 
S

SlaterB

Gast
so eine Exception ist doch kein endgültiges KO,
baue das try/ catch so, dass die Exception pro Bild einzeln abgefangen wird,

wenn eine Exception auftritt, dann ist meinetwegen das erste Bild null,
aber danach kann doch für Bild 2 und 3 normal weitergearbeitet werden

-----

bei einer derart aufwendigen Operation wie dem Laden eines Bildes aus dem Internet ist der Overhead einer Exception vernachlässigbar gering,
insofern macht es keinen Sinn, die Exception zu umgehen, indem vorher die Internetdatei manuell geladen und geprüft wird, das wäre doppelte Arbeit

im Gegensatz dazu wäre eine Java-Codezeile if (x != null) durchaus angebracht,
falls damit eine NullPointerException vermieden werden kann,

aber beim Bild-laden ruhig in die Exception laufen,
try/ catch darf mal arbeiten
 
G

Gast

Gast
>wenn eine Exception auftritt, dann ist meinetwegen das erste Bild >null,
>aber danach kann doch für Bild 2 und 3 normal weitergearbeitet >werden

Danke für deine Antwort. Aber dazu müsste der ExceptionBlock ja Zugriff auf die Image Variable haben

Bsp.


readImage {

try {
Image img = ImageIO.read(url);
}
catch
{
img = null
}

if(img==null) readNextImage
}

Wie würdest du das lösen?
 
G

Gast

Gast
Hmm,

Macht das einbringen von einer try/catch Klausel innerhalb des Codes den Quelltext nicht unübersichtlich? Normalerweise soll try/catch den Code doch übersichtlicher machen

folgendes geht also nicht

try
{
irgendwelcher Code vorher
Image img = ImageIO.read(url)
irgendwelcher Code nachher
List l = ...
l.add(img);
}
catch(Exception e)
{
// wenn image nicht gelesen werden konnte
img = null
}
 
S

SlaterB

Gast
Image img musst du immer noch außerhalb deklarieren

und richtig, mit try/ catch hast du immer gewisse Schwierigkeiten,
die kann man nicht wegdiskutieren,

-----

ich empfehle strengstens eine separate Methode

public static Image loadImage(..) {
try {
return ImageIO.read(url)
catch (..) {
return null;
}
}


dann hast du durch Trennung schon wieder sauberen Code da überhaupt kein try/catch im wichtigen Code,
und in der Hilfsmethode kein Problem mit Image außerhalb von try/catch zu definieren
 
G

Gast

Gast
hmm, ok. oder ich lasse die methode eine exception werfen, dann kann ich die immernoch im aufrufenden block zentral "fangen"
 
S

SlaterB

Gast
??
wenn du die Exception wirfst, wo ist dann der Unterschied zu direkt ImageIO.read(url)?

ohne Exception wäre der Unterschied, dass entweder das Bild geladen wird oder null zurückkommt
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Bild über Socket schicken - Client/Server Netzwerkprogrammierung 10
P HTTP Bild von einem Server per http kopieren Netzwerkprogrammierung 1
M bild von einer url erzeugen Netzwerkprogrammierung 7
A HTTP Bild downloaden Netzwerkprogrammierung 3
J HTTP Bild an Client schicken mit com.sun.net.httpserver Netzwerkprogrammierung 5
S Bild-Datei von Servlet an Browser senden Netzwerkprogrammierung 8
G Bild aus PHP-seite speichern Netzwerkprogrammierung 7
A Webserver - Bild senden Netzwerkprogrammierung 2
K Tabelle im Web über Listener aufrufen Netzwerkprogrammierung 1
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
S Socket Bilder über Socket Senden Netzwerkprogrammierung 0
B Zip Dateien über FTP laden Netzwerkprogrammierung 2
x46 byte[] über BufferedReader auslesen Netzwerkprogrammierung 18
E Socket Parameter über Sockets übergeben und auslesen ! Netzwerkprogrammierung 5
L Webbasierte Anwendung - Authentifizierung über LDAP/ActiveDirectory Netzwerkprogrammierung 5
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
S Daten über TCP/IP senden Netzwerkprogrammierung 3
T Broadcast-message über spez. Netzwerk-Schnittstelle Netzwerkprogrammierung 1
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
M Erstelltes Programm über Internet Browser ausführen Netzwerkprogrammierung 26
T VPN-Verbindung über Java Netzwerkprogrammierung 4
V Einfachen Javaserver über das Internet erreichbar machen Netzwerkprogrammierung 2
J FTP Upload über Proxy funktioniert nicht Netzwerkprogrammierung 1
E Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden. Netzwerkprogrammierung 9
J FTP FTP Zugriff über Proxy Server Netzwerkprogrammierung 1
Thallius Java Application über ZScaler benutzer? Netzwerkprogrammierung 0
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
V einfaches hin und her von Text über Server Netzwerkprogrammierung 2
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
antonbracke Multiuser Software über XMPP Server Netzwerkprogrammierung 1
Z Verbindung zwischen 2 Rechnern über ServerSockets nicht möglich Netzwerkprogrammierung 3
cezary Socket ServerSocket starten über GUIIm unterstehenden Code versuche Netzwerkprogrammierung 6
I ASCII über serielle Schnittstelle Netzwerkprogrammierung 1
N RMI "RMI über Lan funktioniert nicht" & "RMI-Server im Lan scannen" Netzwerkprogrammierung 13
L Mit Java über PHP in MySQL anmelden (Login script) Netzwerkprogrammierung 3
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
T Socket Methoden über Internet aufrufen Netzwerkprogrammierung 1
S Socket Kommunikation über Internet Netzwerkprogrammierung 1
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
K ByteArray über Netzwerk senden klappt nicht Netzwerkprogrammierung 5
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
P RMI Threads die über RMI auf Datenbank zugreifen Netzwerkprogrammierung 2
S Datei schreiben über Applet Netzwerkprogrammierung 8
G Klassen über Netzwerk kommunizieren lassen Netzwerkprogrammierung 6
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
S ImageIcon über Socket schicken (Serialisierung) Netzwerkprogrammierung 6
H Socket Objekte über Socket? Allgemeine Verständnisprobleme in Sachen Socket Netzwerkprogrammierung 3
S Seltsames Verhalten beim Empfangen von Daten über DataInputStream Netzwerkprogrammierung 12
A TCP über UDP Verbindung? Netzwerkprogrammierung 10
C Datei über Socket schreiben und Ereignis lesen Netzwerkprogrammierung 9
D Socket Class über Netzwerk verschicken Netzwerkprogrammierung 2
D JNLP über Webstart funktioniert nicht... Netzwerkprogrammierung 2
J Socket Dateien über Socket auf Server speichern Netzwerkprogrammierung 3
D Socket Datei nur stückweise über Socket verschicken Netzwerkprogrammierung 6
A Computer über Internet verbinden Netzwerkprogrammierung 12
N über Java in eine Text-Datei auf einem Server schreiben Netzwerkprogrammierung 2
c_sidi90 ideale Lösung, Screen Capture über Netzwerk Netzwerkprogrammierung 3
S Socket Verschiedene Exceptions beim Übertragen von Bildern über Socket Netzwerkprogrammierung 20
T ArrayList über Netzwerk senden! Netzwerkprogrammierung 5
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
V Authentifikation über mehrere Server? Netzwerkprogrammierung 3
C Verbindung zu einem Hostrechner über das Internet herstellen Netzwerkprogrammierung 15
M Map über Webservice übertragen Netzwerkprogrammierung 3
D Mehrere Clients über Java-Sockets Netzwerkprogrammierung 13
P Socket Verbindung über das Internet Netzwerkprogrammierung 2
Z Socket Connection reset by peer nur per IP nicht über localhost Netzwerkprogrammierung 13
ruffio1978 Telnet über ein socket ansprechen Netzwerkprogrammierung 8
F Socket Verbindungen über mehrere Server Netzwerkprogrammierung 4
U Datei über das Netzwerk einlesen und speichern Netzwerkprogrammierung 8
G Klassen über JMX per URLClassloader laden? Netzwerkprogrammierung 2
E Zwei PCs über das Internet miteinander verbinden? Netzwerkprogrammierung 3
E Socketverbindung über das Internet - Timeout? Netzwerkprogrammierung 28
M Socket Bilder über das Netzwerk übertragen Netzwerkprogrammierung 4
E Java über Socket ins Internet? Netzwerkprogrammierung 4
F Socket Daten über verschiedene IP's schicken Netzwerkprogrammierung 5
M Socket JavaProg über einen Clienten steuern Netzwerkprogrammierung 5
M Mail über Exchange versenden Netzwerkprogrammierung 13
F C/S über HTTPS Netzwerkprogrammierung 2
D ...class.getResourceAsStream("/meine.properties") funktioniert nicht über RMI? Netzwerkprogrammierung 3
M ganymed-ssh2.har: ftp-Verbindung über ftp-Proxy Netzwerkprogrammierung 2
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
Z File über Socket lesen Netzwerkprogrammierung 3
A HTTP Binärdaten über PHP-Skript in Datenbank schreiben bzw auslesen Netzwerkprogrammierung 2
M Objekt über Object-Stream, empfange "alte" Daten Netzwerkprogrammierung 2
P FTP isFile() über FTP Netzwerkprogrammierung 3
I Socket HTTP Nachrichten über Sockets verschicken Netzwerkprogrammierung 2
N String als byte Array über Socket versenden Netzwerkprogrammierung 8
M Objekt über socket senden/empfangen Netzwerkprogrammierung 3
N Socket File über Socket vom Server an Client versenden Netzwerkprogrammierung 15
P Socket Problem mit Netzwerkverbindung über TCP Netzwerkprogrammierung 12
A UCP Connection über Proxy möglich? Netzwerkprogrammierung 7
V Verbindung zweier Rechner über das Internet mit Sockets Netzwerkprogrammierung 8
F Char über Netzwerk senden Netzwerkprogrammierung 6
S HTTP Login mit CAS Authentisierung über SSL Netzwerkprogrammierung 2
C Befehle über ein GUI an Server senden Netzwerkprogrammierung 15
M Socket Datei über Socket versenden Netzwerkprogrammierung 5
I Objekte über das Netzwerk Netzwerkprogrammierung 5
M Google Translate über Java ansprechen? Netzwerkprogrammierung 13

Ähnliche Java Themen


Oben