Wie kann ich Höhe und Breite eines Bildes erhalten?

8

Warum gibt das folgende Bit des Codes zurück? Höhe: -1 was bedeutet, dass die Höhe noch nicht bekannt ist. Wie bekomme ich die Höhe des Bildes?

%Vor%     
Radek 18.11.2011, 14:33
quelle

5 Antworten

12

Verwenden Sie ImageIO.read(URL) oder ImageIO.read(File) stattdessen. Es wird beim Laden blockieren, und die Bildbreite & amp; Höhe wird bekannt sein, nachdem es zurückkehrt.

E.G.

%Vor%

Alternativ können Sie ein MediaTracker zum Bild hinzufügen asynchron von der Toolkit geladen und gewartet, bis sie vollständig geladen ist .

    
Andrew Thompson 18.11.2011, 14:38
quelle
1

Sie möchten etwas wie dieses:

%Vor%

Der java.awt.Toolkit -Ansatz wird nicht blockiert, gibt also -1 zurück und benachrichtigt den Beobachter (oder nicht in Ihrem Fall, weil er null ist), wenn er geladen wird. Wenn Sie es asynchron möchten, müssen Sie einen Rückruf in Form eines Bildbeobachters bereitstellen.

Oh, und ignoriere nicht einfach Ausnahmen, sondern drucke zumindest die Stack-Trace!

    
berry120 18.11.2011 14:40
quelle
1

Weil das Bild asynchron im Hintergrund geladen wird.

Wie das getHeight() javadoc sagt, müssen Sie ein bereitstellen ImageObserver (anstelle von null ), das aufgerufen wird, wenn das Bild geladen wurde.

    
Joonas Pulakka 18.11.2011 14:40
quelle
1

Toolkit#createImage(...) ist nicht blockierend . Im Allgemeinen würde ich lieber javax.imageio.ImageIO verwenden, um Bilder zu lesen.

Um auf Toolkit#createImage(...) zu warten, verwenden Sie:

%Vor%

Danach können Sie image.getHeight()

aufrufen     
Ingo Kegel 18.11.2011 14:40
quelle
0

createImage wird im Hintergrund ausgeführt, um das Image zu laden.

Verwenden Sie einen MediaTracker, um auf das Laden zu warten, und verwenden Sie getHeight (und verwenden Sie einen gültigen ImageObserver, um Fehler zu vermeiden)

    
Hachi 18.11.2011 14:41
quelle

Tags und Links