tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von vfl_freak
  • 1 Beitrag von Lastlord
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
1298
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    moemaster moemaster ist offline Mitglied Gold
    Registriert seit
    Nov 2008
    Ort
    Hamburg
    Beiträge
    106
    Hallo Leute,

    mit
    Code :
    1
    
    Icon ico = new ImageIcon("C:\test.png");
    kann man lokalgespeicherte Bilder ja z.B. auf einem Label o.ä. anzeigen. Nun möchte ich aber kein Bild von meiner Platte anzeigen, sondern eins aus dem Web. Es funktioniert so zwar nicht, aber rein logisch und um zu verdeutlichen, was ich will müsste es
    Code :
    1
    
    Icon ico = new ImageIcon("htttp://www.example.de/test.png/");
    lauten. Ich hoffe ihr versteht mein Dilemma und könnt mir helfen: ich möchte gerne ein Bild aus dem Internet beispielsweise auf einem Label anzeigen.

    Beste Grüße/
    With best regards,
    Moe
     

  2. #2
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    doch, jedoch musst Du statt einem String eine URL übergeben !!
    Etwa so:

    Code :
    1
    2
    
     
    ImageIcon ico = new ImageIcon( new URL("http://www.example.de/test.png/") );

    Weitere Infos findest Du bspw. hier:

    http://www.straub.as/java/awt/Image_...creenShot.html

    Gruß
    Klaus
    Geändert von vfl_freak (19.08.09 um 08:31 Uhr) Grund: eine fehlende Klammer ;-)
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  3. #3
    moemaster moemaster ist offline Mitglied Gold
    Registriert seit
    Nov 2008
    Ort
    Hamburg
    Beiträge
    106
    Hm, also bei mir funktioniert das leider nicht. Es wird zwar keine Exception geschmissen und der Rest des Programms läuft auch nach wie vor einwandfrei, aber das Bild wird einfach nicht angezeigt.
     

  4. #4
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    hmm, seltsam ....

    Sehe gerade, dass der letzte Slash im String überflüssig ist und vlt. Probleme macht.

    Du kannst auch versuchen, vorher die URL zu verifizieren ....

    Was sagt denn der Debugger ? ? ?

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  5. #5
    moemaster moemaster ist offline Mitglied Gold
    Registriert seit
    Nov 2008
    Ort
    Hamburg
    Beiträge
    106
    Das Seltsame ist, dass wenn ich als URL keine Internetadresse, sondern einen lokalen Bildpfad angebe:
    Code :
    1
    
    URL url = new URL("file:///H:/example/test.png");
    hat er überhaupt keine Probleme damit, das Bild anzuzeigen. Aber sobald er auf irgendein Image im Web zugreifen soll zeigt er einfach gar nix mehr an. Um gleich voreilige Schlüsse vorwegzunehmen: eine Internetverbindung besteht, ein großer Teil des Programm greift auf Web zu und dort treten keinerlei Probleme auf
     

  6. #6
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    wie gesagt, Du könntest mal versuchen, vor dem Zugriff die URL zu validieren. Ich mache das mit folgender Methode:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    
    private boolean validateUrl(URL url) 
    {
        boolean bLoadOK = true;
        HttpURLConnection httpcon = null;
        int responsecode = -1;
        if ( (bLoadOK) && (url != null)) 
        {
            try 
            {
                String strTheHostIP = InetAddress.getByName(url.getHost()).getHostAddress() ;
                String strTheHostname = InetAddress.getByName(url.getHost()).getHostName();
                int thePort = url.getPort();
                String thePath = url.getPath();
                URL theURL = null;
                if (thePort == -1)
                {
                     theURL = new URL("http://" + strTheHostIP + thePath);
                } 
                else 
                {
                    theURL = new URL("http://" + strTheHostIP + ":" + thePort + thePath);
                }
                httpcon = (HttpURLConnection) theURL.openConnection();
                httpcon.setRequestProperty( "Host", strTheHostname);
                responsecode = httpcon.getResponseCode();
            }
            catch (IOException ex1) 
            {
                bLoadOK = false;
            }
        }
        if (responsecode != java.net.HttpURLConnection.HTTP_OK) // 200 -> HTTP_OK
        {
            bLoadOK = false;
        }
        else
        {
            bLoadOK = true;
        }
        return bLoadOK;
    } // validateUrl

    Das müßte eigentlich alles Java-Standard sein ... sonst bitte ggf. nachfragen!

    Kann es ggf. sein, das Ein Proxy-Server den Bildzugriff verhindert? Damit ich hatte ich vor geraumer Zeit auch schon mal Probleme ....

    Gruß
    Klaus
    Lastlord bedankt sich. 
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  7. #7
    moemaster moemaster ist offline Mitglied Gold
    Registriert seit
    Nov 2008
    Ort
    Hamburg
    Beiträge
    106
    Die Seite scheint valide zu sein. Ich weiß nicht, ob für eine Java Applikation andere Proxyeinstellungen gelten als für mich, aber ich kann mir die Bilder ohne Probleme anschauen. Ich bin echt ratlos
     

  8. #8
    Lastlord Lastlord ist offline Mitglied Silber
    Registriert seit
    Jun 2008
    Ort
    Hannover
    Beiträge
    82
    Hm komisch..

    Du verrätst nicht, wo du den Bildpfad hebekommst. Ich hatte ma ne ähnliches Problem.
    Da habe ich die URLdaten aus na .properties datei gelesen und in der datei war ein Leerzeichen zu viel(also in der Zeile der url) .. und so hat er die url nicht laden können.


    Wenn die URL wirklich richtig ist aber es dennoch nicht geht, dann poste doch mal die URL, damit andere ma testen können, ob das bei ihen auch nicht geht... .
     

  9. #9
    moemaster moemaster ist offline Mitglied Gold
    Registriert seit
    Nov 2008
    Ort
    Hamburg
    Beiträge
    106
     

  10. #10
    Lastlord Lastlord ist offline Mitglied Silber
    Registriert seit
    Jun 2008
    Ort
    Hannover
    Beiträge
    82
    Hm bei mir gehts:
    Teste mal die Programme bei dir:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    
    public class II {
        public static void main(String args[]) throws MalformedURLException {
            JFrame f = new JFrame();
            ImageIcon ii = new ImageIcon(
                    new URL(
                            "http://www.webshotspro.com/gd/show.php/400x300/screenshots/cff81936b955dfdecbdd987a11dcb57d.jpg"));
            System.out.println(ii);
            System.out.println(ii.getDescription());
     
            switch (ii.getImageLoadStatus()) {
            case MediaTracker.ABORTED:
                System.out.println("ABORTED");
                break;
            case MediaTracker.COMPLETE:
                System.out.println("COMPLETE");
                break;
            case MediaTracker.ERRORED:
                System.out.println("ERRORED");
                break;
            case MediaTracker.LOADING:
                System.out.println("LOADING");
                break;
     
            default:
                break;
            }
     
            f.add(new JLabel("Bild", ii, JLabel.LEFT));
     
            f.pack();
            f.setVisible(true);
        }
    }
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
    import java.awt.Canvas;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.net.URL;
     
    import javax.imageio.ImageIO;
    import javax.swing.JFrame;
     
    public class II2 {
        static BufferedImage i;
     
        public static void main(String args[]) throws IOException {
            JFrame f = new JFrame();
     
            i = ImageIO
                    .read(new URL(
                            "http://www.webshotspro.com/gd/show.php/400x300/screenshots/cff81936b955dfdecbdd987a11dcb57d.jpg"));
            f.add(new Canvas() {
     
                @Override
                public void paint(Graphics g) {
                    g.drawImage(i, 0, 0, this);
                }
            });
     
            f.setSize(100, 100);
            f.setVisible(true);
        }
    }
     

  11. #11
    moemaster moemaster ist offline Mitglied Gold
    Registriert seit
    Nov 2008
    Ort
    Hamburg
    Beiträge
    106
    Hab es ausprobiert, aber da bekomme ich folgende Exception:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    Exception in thread "main" javax.imageio.IIOException: Can't get input stream from URL!
        at javax.imageio.ImageIO.read(Unknown Source)
        at II2.main(II2.java:17)
    Caused by: java.net.ConnectException: Connection timed out: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at sun.net.NetworkClient.doConnect(Unknown Source)
        at sun.net.www.http.HttpClient.openServer(Unknown Source)
        at sun.net.www.http.HttpClient.openServer(Unknown Source)
        at sun.net.www.http.HttpClient.<init>(Unknown Source)
        at sun.net.www.http.HttpClient.New(Unknown Source)
        at sun.net.www.http.HttpClient.New(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
        at java.net.URL.openStream(Unknown Source)
        ... 2 more

    Woran kann das liegen?

    //EDIT: Jetzt kommt zwar keine Exception, allerdings gibt er in der Konsole
    Code :
    1
    2
    3
    
    http://www.webshotspro.com/gd/show.php/400x300/screenshots/cff81936b955dfdecbdd987a11dcb57d.jpg
    http://www.webshotspro.com/gd/show.php/400x300/screenshots/cff81936b955dfdecbdd987a11dcb57d.jpg
    ERRORED
    aus.
    Geändert von moemaster (24.08.09 um 09:49 Uhr)
     

  12. #12
    Lastlord Lastlord ist offline Mitglied Silber
    Registriert seit
    Jun 2008
    Ort
    Hannover
    Beiträge
    82
    In beiden Fällen ist das Problem: Can't get input stream from URL
    Vll. bist du über einen Proxy im Internet... schau dir das mal an:
    http://forums.sun.com/thread.jspa?threadID=5381499
    Da man ja nie weiß, wie lang es den Link noch gibt poste ich nun nochma was da interessantes steht:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
       SocketAddress address = new InetSocketAddress(hostName, port);
                 
                 // Create an HTTP Proxy using the above SocketAddress.
                 Proxy proxy = new Proxy(Proxy.Type.HTTP, address);
                 
                 URL url = new URL("www.example.com/image.jpg");
                 
                 // Open a connection to the URL using the proxy information.
                 URLConnection conn = url.openConnection(proxy);
                 InputStream inStream = conn.getInputStream();
                 
                 BufferedImage image = ImageIO.read(url);
    Kriegst du dein Bild damit?
    moemaster bedankt sich. 

  13. #13
    moemaster moemaster ist offline Mitglied Gold
    Registriert seit
    Nov 2008
    Ort
    Hamburg
    Beiträge
    106
    Es lag am Proxy Vielen Dank, es funktioniert

    //CLOSED
     

Ähnliche Themen

  1. Bilder anzeigen
    Von chriss_2oo4 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 02.09.10, 18:22
  2. JSF Applikation innerhalb einer JSF Applikation
    Von Chefkoch333 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 12.10.07, 13:21
  3. Bilder für Applikation?
    Von tinella im Forum Java
    Antworten: 7
    Letzter Beitrag: 26.03.07, 21:54
  4. Antworten: 2
    Letzter Beitrag: 22.12.05, 11:43
  5. .NET versus viele Bilder in Applikation
    Von Celesth im Forum .NET Archiv
    Antworten: 3
    Letzter Beitrag: 18.04.04, 13:05

Stichworte