wie kann ich ein Bild (jpg) aus dem Intnet laden und anschl. lokal speichern?
Ich finds nicht durch google (warscheinlich zu trivial). Welche Klassen
brauche ich?
- java.awt.image.BufferedImage
- java.awt.Graphics
helfen mir da irgendwie nicht weiter.
Sonst weiss ich nicht, wo ich suchen soll. Und vor allem *wonach*.
Ja, und die FAQ hab ich
gelesen. (http://de.geocities.com/uweplonus/faq/faq.html)
Wenns da drin ist, hab ich's bisher übersehen.
TIA ... Heino
Wie wäre es zB. mit dem Sun-Tutorial:
http://java.sun.com/docs/books/tutorial/
http://java.sun.com/docs/books/tutorial/2d/problems/index.html
Joe
Heino Tiedemann schrieb:
Ergänzend zu Josephs Vorschlag:
Die von dir angeführten Klassen brauchst Du nicht! Es geht viel
einfacher, da Du das Bild ja nicht dekomprimieren mußt. Du kannst es
einfach binär (byte-Array oder so) aus einer java.net.URL/-Connection
(.getInputStream()) auslesen und 1:1 abspeichern.
Hth,
Ingo
Hi,
nicht so kompliziert...
1. Erzeuge ein passendes URL-Object
2. öffne eine Verbindung URL#openConnection()
3. lese den InputStream
4. schreibe diesen Stream in ein File
Ausschnitt:
URL url = new URL (http://www.foo.de/logo.jpg);
URLConnection con = url.openConnection ();
FileInputStream fis = con.getInputStream ();
FileOutputStream fos = new FileOutputStream (new
File(target));
int read = 0;
while ((read=fis.read()) != -1)
fos.write (read);
fis.close();
fos.flush();fos.close()
hatte ich gerade im Editor rumfahren...
;-)
Frank
ups, natürlich in Anführungszeichen:
> URL url = new URL ("http://www.foo.de/logo.jpg");
>[...]
> fos.flush();fos.close();
das letzte ';' auch...
Frank
> nicht so kompliziert...
> 1. Erzeuge ein passendes URL-Object
> 2. öffne eine Verbindung URL#openConnection()
> 3. lese den InputStream
> 4. schreibe diesen Stream in ein File
Danke.
Beim erzeugen des URL-Objects kann ich ja auch andere Konstruktoren
nehmen. Zum Beispiel (String protocol, String host, int port, String
file), um den URL in seinen Einzelteilen zu übergeben. Was mir aber fehlt:
Wo kann ich einen Proxy angeben?
Ich komm hier nämlich nur über einen Proxy raus.
Folgende Fehlermeldung bestätigt das:
java.net.ConnectException: Operation timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:350)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:137)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:124)
at java.net.Socket.<init>(Socket.java:268)
at java.net.Socket.<init>(Socket.java:95)
at sun.net.NetworkClient.doConnect(NetworkClient.java:45)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:334)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:520)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:270)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:280)
at sun.net.www.http.HttpClient.New(HttpClient.java:292)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:417)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:510)
at ImageGrabber.go(ImageGrabber.java:32)
at ImageGrabber.main(ImageGrabber.java:25)
Exception in thread "main"
IMHO über System properties. Schau mal hier:
http://java.sun.com/j2se/1.4/docs/guide/net/properties.html
Das sollte dir weiterhelfen.
Gruß,
Andreas
> Heino Tiedemann wrote:
> >
> > Beim erzeugen des URL-Objects kann ich ja auch andere Konstruktoren
> > nehmen. Zum Beispiel (String protocol, String host, int port, String
> > file), um den URL in seinen Einzelteilen zu übergeben. Was mir aber fehlt:
> > Wo kann ich einen Proxy angeben?
> >
>
> IMHO über System properties.
Ah. Danke. So isses.
Irgendwie alles dezentralisiert. Ich hätte es bei URL
oder URLConnector erwartet.
bis denn denn Heino