[Java]Image uit een url laden

Pagina: 1
Acties:

  • Linc
  • Registratie: December 2000
  • Laatst online: 19-02 12:07
Java:
1
2
3
4
5
URL url = new URL("http://images.tweakers.net/usericons/15184/logo2.jpg");
    
// Get the image
java.awt.Image image = java.awt.Toolkit.getDefaultToolkit().getDefaultToolkit().createImage(url);
int width = image.getWidth(this);


dit laat dus een image in en als ik dan met de methode :
Java:
1
2
3
4
public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height){
        System.out.println(infoflags+" "+x+" "+y+" "+width+" "+height);
        return true;
}


kijk dan krijg ik als infoflag 64 terug dit betekent error hoe kom ik er achter wat voor een error dat is, of wat doe ik verkeerd?

ik wil dus gewoon een image in een applicate inladen die van het web komt.

http://www.slobmotorsport.nl - iRacing Profiel


Verwijderd

Ik doe het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
URL url = new URL("http://images.tweakers.net/usericons/15184/logo2.jpg");

// Get Image
Image image = Toolkit.getDefaultToolkit().createImage(url);

// Create ImageIcon
ImageIcon imageIcon = new ImageIcon(image);

// Put it on a JLabel    
JLabel jLabel = new JLabel(imageIcon);

// And finally put it on a JPanel
JPanel jPanel = new JPanel();
jPanel.setLayout(new BorderLayout());
jPanel.add(jLabel, BorderLayout.CENTER);


En je krijgt keurig de afbeelding te zien op het betreffende panel.

  • SkyKnife
  • Registratie: Oktober 2001
  • Laatst online: 21-03 01:12
Mischien heb je hier wat aan?

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
public static Image loadImage( String file ) 
{
        if (file==null) 
                return null;

        Image 
                tmpImage    = null;
  
        MediaTracker 
                mt      = null; 
            
        try {
                tmpImage    = Toolkit.getDefaultToolkit().getImage( file );
                mt      = new MediaTracker( sComponent );

                mt.addImage( tmpImage, 0 );
                mt.waitForID( 0 );
        } 
        catch (InterruptedException e) {
                if (debug) System.out.println( "Error: "+ e.getMessage() );
                return null;
        }

        if (mt.isErrorID( 0 )) 
        {
                if (debug) System.out.println("Warning: loadImage("+ file +") failed!" );
                return null;
        }

        return tmpImage;
}


Dit is natuurlijk een cut/paste stuk uit een lib van mij. Het is dus geen werkent geheel.

edit:
code=java geworden

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:19
Ok, ik ga nu de Java manual openen.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 04:19
Gevonden!

Oh - dit wist je schijnbaar al. Sta ik even voor lul.

Mijn excuses voor deze niet-nuttige bijdrage.

  • Helox-in-a-box
  • Registratie: Augustus 2000
  • Laatst online: 26-08 23:24
je kan het beste die MediaTracker van SkyKnife gebruiken, anders krijg je een nullpointer exception als je het plaatje laat zien en hijs nog niet helemaal ingelezen.

  • SkyKnife
  • Registratie: Oktober 2001
  • Laatst online: 21-03 01:12
JAJA... ik doe toch iets goed ;)

  • Linc
  • Registratie: December 2000
  • Laatst online: 19-02 12:07
Verwijderd schreef op 19 November 2002 @ 15:14:
Ik doe het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
URL url = new URL("http://images.tweakers.net/usericons/15184/logo2.jpg");

// Get Image
Image image = Toolkit.getDefaultToolkit().createImage(url);

// Create ImageIcon
ImageIcon imageIcon = new ImageIcon(image);

// Put it on a JLabel    
JLabel jLabel = new JLabel(imageIcon);

// And finally put it on a JPanel
JPanel jPanel = new JPanel();
jPanel.setLayout(new BorderLayout());
jPanel.add(jLabel, BorderLayout.CENTER);


En je krijgt keurig de afbeelding te zien op het betreffende panel.
zo had ik het dus ook maar om de 1 of andere reden werkt dit dus niet :(

http://www.slobmotorsport.nl - iRacing Profiel


  • Linc
  • Registratie: December 2000
  • Laatst online: 19-02 12:07
SkyKnife schreef op 19 november 2002 @ 15:45:
JAJA... ik doe toch iets goed ;)
waar staat die sComponent voor in je code

http://www.slobmotorsport.nl - iRacing Profiel


  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
mediatracker gebruiken... kan zijn dat de image nog niet klaar is met laden.. dan zie je niks.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
Image tmp = Toolkit.getDefaultToolkit().getImage( url );
        
MediaTracker m = new MediaTracker(new Canvas());
m.addImage(tmp,1);

try
{ 
m.waitForAll();
}
catch(Exception e)
{   
}

  • Linc
  • Registratie: December 2000
  • Laatst online: 19-02 12:07
SkyKnife ik heb ff je code aangepast en dan als ik hem nu gebruik krijg ik de volgende Exception :

Warning: loadImage(http://images.tweakers.net/usericons/15184/logo2.jpg) failed

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
public static Image loadImage( URL url,Component comp ) 
    {
            if (url==null) 
                    return null;

            Image 
                    tmpImage    = null;

            MediaTracker 
                    mt      = null; 

            try {
                    tmpImage    = Toolkit.getDefaultToolkit().getImage( url );
                    mt      = new MediaTracker( comp );

                    mt.addImage( tmpImage, 0 );
                    mt.waitForID( 0 );
            } 
            catch (InterruptedException e) {
                    System.out.println( "Error: "+ e.getMessage());
                    return null;
            }

            if (mt.isErrorID( 0 )) 
            {
                    System.out.println("Warning: loadImage("+ url +") failed");
                    return null;
            }

            return tmpImage;
    }


edit:
oeps SkyKnife in plaats van skynet, srry

http://www.slobmotorsport.nl - iRacing Profiel


Verwijderd

the_Emperor schreef op 19 november 2002 @ 15:50:
[...]


zo had ik het dus ook maar om de 1 of andere reden werkt dit dus niet :(
Vreemd, bij mij werkt het gewoon :?
Importeer je wel de juiste classes/packages?
code:
1
2
3
import java.awt.*;
import javax.swing.*;
import java.net.URL;

Wat gaat er bij jou fout als je mijn code gebruikt?

  • Linc
  • Registratie: December 2000
  • Laatst online: 19-02 12:07
Verwijderd schreef op 19 November 2002 @ 16:20:
[...]

Wat gaat er bij jou fout als je mijn code gebruikt?
nou er gebeurt niks, ik krijg het plaatje niet te zien en hij compileert wel goed en ja ik importeer alles. Als ik een gewoon plaatje van de hdisk haalt werkt het wel ....

http://www.slobmotorsport.nl - iRacing Profiel


  • SkyKnife
  • Registratie: Oktober 2001
  • Laatst online: 21-03 01:12
De sComponent heb ik gebruikt ooit om extra image info uit te kunnen lezen tijden het laden van het plaatje. Je kunt ook Null gebruiken.

De warning is waarschijnlijk het resultaat dat je niet op elke server je plaatjes mag halen. nl alleen de server waar de applet op draait mag dat. Is het niet eens een applet krijg je weer andere sercurity dingen. Ik kan me hierin vergissen maar denk het niet.

Je kunt vast wel ff uitzoeken hoe je ook al weer de error msg van de MediaTracker zelf op het beeld zet. Dit zal natuurlijk handig zijn?

Als je me wilt spreken: [url]irc://quakenet/wired[/url] (irc nick Wired)

  • Linc
  • Registratie: December 2000
  • Laatst online: 19-02 12:07
SkyKnife schreef op 19 November 2002 @ 17:07:
ik ga weer ff hele tread lezen... en daarna deze post editen...
als je direct me nodig hebt: [url]irc://quakenet/wired[/url] (irc nick Wired)
ik zit op me werk (stage) dus heb geen irc (thuis gebruikt ik trouwens msn ... ieder stapte over dus...)anyway ik hoor het wel

http://www.slobmotorsport.nl - iRacing Profiel


  • SkyKnife
  • Registratie: Oktober 2001
  • Laatst online: 21-03 01:12
check post 2 up

  • Linc
  • Registratie: December 2000
  • Laatst online: 19-02 12:07
SkyKnife schreef op 19 November 2002 @ 17:07:
...
Je kunt vast wel ff uitzoeken hoe je ook al weer de error msg van de MediaTracker zelf op het beeld zet. Dit zal natuurlijk handig zijn?

...
hmm ik kan het niet vinden ... kan je de error message wel uitlezen?

http://www.slobmotorsport.nl - iRacing Profiel

Pagina: 1