Klasse Image - Höhe und Breite ermitteln

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

kann mir hier jemand sagen wie ich die Breite und die Höhe eine Objektes vom Typ Image ermitteln kann.


Problem + Beispiel:

Image bild = Toolkit.getDefaultToolkit().getImage(absoluterPfad);

bild.getwidth(this); => wird nicht funktionieren da ich nicht in paint() bin und somit nicht this eintragen kann und ich hab auch kein ImageObserver.

ander möglichkeit:
bild.getwidth(nul); => funktioniert auch nicht so richtig, ich bekomme per zufall bei manchen bilder -1 zurück was das bedeutet könnt hier euch denken


Hab ihr eine Idee so teilt die mir bitte mit.
Danke.

Mit freundlichen Grüßen
 

L-ectron-X

Gesperrter Benutzer
bild.getwidth(this); => wird nicht funktionieren da ich nicht in paint() bin und somit nicht this eintragen kann und ich hab auch kein ImageObserver.
Hast du's denn erst mal probiert, bevor du hier postest?
this ist eine Referenz auf die Klasse bzw. Objekt in der/dem du dich gerade befindest.
Diese Klasse kann die Aufgabe eines ImageObservers übernehmen.
Guck mal in die Java-API-Doc. Dort sind gleich ganz oben die Klassen aufgeführt, die das Interface implementieren.
http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/ImageObserver.html
 
G

Gast

Gast
ja ich habe es schon probiert und die api habe ich mir auch schon angeschaut. das problem an der sache ist das ich nicht in der paint bin und somit auch nicht this benutzen kann. man kann nicht immer this benutzen, es kommt ganz darauf an wo man ist.
 

byte

Top Contributor
Lies das Bild doch alternativ so ein:

Code:
BufferedImage bild = ImageIO.read(new File(absoluterPfad));

Dann kannst Du einfach bild.getWidth() und bild.getHeight() machen und bei Bedarf das ganze nach Image casten.
 
G

Gast

Gast
Bei dieser Variante wird doch das ganze Bild in den Speicher gelesen, das bedeutet viel Speicherverbrauch oder?
 

willi

Mitglied
schon mal mit:

Code:
Image img = Toolkit.getDefaultToolkit().createImage(<absoluterPfad>);

versucht?

und dann mit:
Code:
img.getWidth(null);

probiers mal...
 
G

Gast

Gast
Hallo willi,
danke für die Antwort.
Diese Idee ist mir auch eingefallen, aber es ergibt sich das selbe wie getImage(). Ich bekomme per zufall bei manchen bilder -1 zurück, ich hab es nochmal getestet - aber natürlich ändert sich nichts von gestern auf heute.
Wieso es mit null als Parameter nur machmal funktioniert kann ich mir auch nicht erklären. Leider.
 

Illuvatar

Top Contributor
also a) das ImageIO braucht genauso viel Speicher wie das andere, das Bild muss ja eh immer im Speicher sein, wie soll das sonst gezeichnet werden?
b) wieso zur Hölle sollte in paint() this nicht gehen? Ich kann mir nur einen Fall vorstellen wo es kein this gibt, und das wäre eine static Methode
 
G

Gast

Gast
Hallo leute,
ich muss mal erlich sagen das dieses Forum irgendwie komisch ist. Nicht eine Person aber nur eine hat hier mehr als einmal gepostet, wenn man nur eine kleine zusatzfrage hat dann wird die nie beantwortet. So kann man echt kein Problem lösen, wirklich nicht. Wenn immer wieder eine neue Person kommt und man immer wieder alles neu erklären muss und kein schritt weiter kommt, dann nervt das auch mal.

@Illuvatar
a) es muss nicht immer alles eingelesen werden, es kann sich auch nur eine referenz darauf beziehen. denn im jedem bild steht die eigenschaften eines bildes, die hohe und breite auch!

b) wer lesen kann ist klar im vorteil, leider muss ich mich hier immer wiederholen: das problem ist das ich nicht, ich wiederhole nicht in paint bin, also kann auch this in meinen fall nicht funktionieren. Ich habe nie gesagt das this in paint nicht funktioniert ....
 

Illuvatar

Top Contributor
Ui, ich antworte zum zweiten Mal (was ist da jetzt so besonderes dran?):

also: du hast Recht, dass du nicht in paint bist, das hast du gesagt, da hab ich mich verlesen.

ansonsten ist das Problem, denke ich, dass das Toolkit#getImage (oder auch create) die Bilder eben nur asynchron lädt, d.h. wenn du getWidth(null) aufrufst ist die Größe unbekannt (laut API bedeutet -1 auch not yet known).
Demnach hast du 2 Möglichkeiten:
a) Einen MediaTracker verwenden und mit Hilfe von diesem warten, bis das Bild geladen ist. (->Forensuche)
b) Das mit ImageIO (das lädt das Bild sofort)
Diese beiden Möglichkeiten sind ziemlich gleichwertig. Dein Argument "es muss nicht immer alles eingelesen werden" verstehe ich nicht wirklich, dein getImage liest genausoviel ein wie ImageIO.read. Wenn du nur einen Teil der Datei lesen willst, kannst du das auch selber per FileReader machen, ich glaube aber kaum, dass sich der Aufwand lohnt. Falls du das Bild öfter brauchst, ist es auf jeden Fall nützlicher, irgendwo eine Referenz darauf zu haben. (Und dann am Besten per createImage laden, da dann die Bilddaten nicht im Cache gehalten werden)
 
R

Roar

Gast
ich glaub du suchst sowas:
Code:
		File f = new File("großesBild.jpeg");
		ImageInputStream is = ImageIO.createImageInputStream(f);
		Iterator<ImageReader> readers = ImageIO.getImageReaders(is);
		if(!readers.hasNext())
			throw new RuntimeException("nix jpeg");
		ImageReader r = readers.next();
		r.setInput(is);
		int width = r.getWidth(0);
		int height = r.getHeight(0);
:?:
 
G

Gast

Gast
Hallo Leute,
ok ich glaube ich weiß wie ich das ganze in meiner schleife einbauen muss. Ich teste das einfach mal. Ich sag dann mal auch bescheid.
Ich Danke euch allen.


PS: Das ganze kann aber auch dauern ...

Mit freundlichen Grüßen
Hans Peter und Wurst
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J 2D-Grafik Background Image Klasse AWT, Swing, JavaFX & SWT 14
bluerob Problem beim Image zeichnen via andere Klasse AWT, Swing, JavaFX & SWT 7
G Image laden aber nicht in Applet Klasse AWT, Swing, JavaFX & SWT 2
N Image Array einer anderen Klasse bearbeiten AWT, Swing, JavaFX & SWT 2
M Eigene Java Klasse für allgemeine Grafikelemente AWT, Swing, JavaFX & SWT 8
Jose05 Aus einer normalen Java Klasse eine FXML-Klasse laden AWT, Swing, JavaFX & SWT 12
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
_user_q Versionscode aus build.gradle in Java-Klasse ausgeben lassen AWT, Swing, JavaFX & SWT 14
H MouseAdapter Klasse nutzen wenn eigene Klasse bereits von anderer erbt AWT, Swing, JavaFX & SWT 13
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
T JavaFX TableColumn in separate Klasse auslagern AWT, Swing, JavaFX & SWT 7
Monokuma KeyEvent in der Canvas Klasse AWT, Swing, JavaFX & SWT 0
B Was würden Profis an meiner Klasse verbessern? AWT, Swing, JavaFX & SWT 1
B JavaFX Verständnisfrage EventHandler<ActionEvent> Implementierung in meiner Klasse AWT, Swing, JavaFX & SWT 2
B JavaFX Farbe eines Quadrates in einer separaten Klasse ändern AWT, Swing, JavaFX & SWT 4
S Stream API, Anonyme Klasse AWT, Swing, JavaFX & SWT 8
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
F jTree und das Model aus einer eigenen Klasse AWT, Swing, JavaFX & SWT 1
F Jtree aus Klasse mit Arraylisten AWT, Swing, JavaFX & SWT 1
L Javafx Controller Klasse in Maven AWT, Swing, JavaFX & SWT 7
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
J Bild von anderer Klasse will nicht laden AWT, Swing, JavaFX & SWT 1
L CardLayout in einer Klasse? AWT, Swing, JavaFX & SWT 2
L Java- UI zweites Fenster aus einer anderen Klasse öffnen durch ButtonClick AWT, Swing, JavaFX & SWT 4
ralfb1105 Swing Ausführung einer SwingWorker Klasse stoppen AWT, Swing, JavaFX & SWT 4
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Background einer Jpanel Klasse ändern AWT, Swing, JavaFX & SWT 1
J JFram Location aus Konstruktor einer anderen Klasse auslesen AWT, Swing, JavaFX & SWT 10
K Frame aus anderer Klasse schließen AWT, Swing, JavaFX & SWT 3
M Eigene Klasse mit Grafikobjekten schreiben AWT, Swing, JavaFX & SWT 4
0 Swing JTable aus anderer Klasse updaten AWT, Swing, JavaFX & SWT 5
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
L JavaFX button über andere Klasse ändern AWT, Swing, JavaFX & SWT 7
K über Button andere Java Klasse aufrufen AWT, Swing, JavaFX & SWT 15
C Nach Aufruf von anderer Klasse streikt Grafik AWT, Swing, JavaFX & SWT 1
S per Button Variableninhalt aus anderer Klasse holen AWT, Swing, JavaFX & SWT 3
F AWT Robot Klasse Screenshot nach Pixelmustern in bestimmten Radius um Bildschirmmittelpunkt absuchen AWT, Swing, JavaFX & SWT 13
K JButton auf anderer Klasse AWT, Swing, JavaFX & SWT 6
R Update eines Labels bei Methodenaufruf einer anderen Klasse AWT, Swing, JavaFX & SWT 9
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
J JTextfield automatisch aus zweiter Klasse aktualisieren AWT, Swing, JavaFX & SWT 5
J JavaFX Tableview Daten hinzufügen aus anderer Klasse AWT, Swing, JavaFX & SWT 7
Ghostman1711 GUI Java von Klasse mit Application Windows anderes Application Window aufrufen AWT, Swing, JavaFX & SWT 6
K JTable in extra Klasse, Zugriff in einer anderen klasse nicht möglich AWT, Swing, JavaFX & SWT 26
D JavaFX Probleme bei Service-Klasse beim ändern der GUI AWT, Swing, JavaFX & SWT 8
T Klasse über JButton schließen AWT, Swing, JavaFX & SWT 4
N JavaFX Erweitern der Line(Shape)-Klasse AWT, Swing, JavaFX & SWT 1
T Durch klicken eines Buttons Klasse wechseln AWT, Swing, JavaFX & SWT 2
7 JavaFX Verwendung einer ResizableCanvas-Klasse in fxml-Datei AWT, Swing, JavaFX & SWT 3
A JavaFX Von Klasse auf Controller Inhalt zugreifen AWT, Swing, JavaFX & SWT 9
L Swing Teile eines JPanel in eigene Klasse auslagern AWT, Swing, JavaFX & SWT 3
J Eigene Klasse auf Basis Textfield in SceneBuilder anzeigen AWT, Swing, JavaFX & SWT 4
B Swing Auf JList-Elemente aus einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 1
J JavaFX Mehrfache Benutzung von Methoden einer Klasse AWT, Swing, JavaFX & SWT 17
B Jlabel Text von anderen Klasse aus ändern AWT, Swing, JavaFX & SWT 9
stylegangsta Eigene Klasse für JButton aus dem JFrame abrufen AWT, Swing, JavaFX & SWT 29
N JavaFX GUI Elemente einer anderen (FXML)Klasse ansprechen AWT, Swing, JavaFX & SWT 16
O JTabeddpane aber jedes JPanel als eigene Klasse anlegen AWT, Swing, JavaFX & SWT 7
B Swing GUI in einer anderen Klasse aufrufen AWT, Swing, JavaFX & SWT 4
B Klasse mit ArrayList AWT, Swing, JavaFX & SWT 1
G Event Handling Event Handling in eigene Klasse AWT, Swing, JavaFX & SWT 4
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
L JavaFX Verständnisfrage zu JavaFX FXML und Controller-Klasse AWT, Swing, JavaFX & SWT 1
T Generische Klasse in JList über DefaultListModel AWT, Swing, JavaFX & SWT 1
D Event Handling Aus einer anderen Klasse heraus einen Text des JLabels ändern. AWT, Swing, JavaFX & SWT 12
F Instanzierung einer inneren Klasse in Klasse eines anderen Packets AWT, Swing, JavaFX & SWT 3
C JavaFX Zugriff auf TextField aus einer anderen Klasse AWT, Swing, JavaFX & SWT 4
A JavaFX Scene Builder eigene Klasse hinzufügen AWT, Swing, JavaFX & SWT 2
S 2 Paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
D JavaFX Controller Klasse splitten? AWT, Swing, JavaFX & SWT 16
S JComboBox aus anderer Klasse füllen (Java-Swing) AWT, Swing, JavaFX & SWT 0
S ActionListener Klasse aufrufen AWT, Swing, JavaFX & SWT 4
M Swing JTextField getText Mehtode übergeben in eine Klasse zu einer Rechnung AWT, Swing, JavaFX & SWT 1
M Panel in geerbter JFrame Klasse adden AWT, Swing, JavaFX & SWT 4
F JavaFX Zugriff auf Controller Methode von einer normalen Klasse aus AWT, Swing, JavaFX & SWT 4
D AWT Das ganze GUI in eine Klasse? AWT, Swing, JavaFX & SWT 1
C JavaFX Klasse wird nicht als public erkannt AWT, Swing, JavaFX & SWT 6
J zwei Paint methoden in einer Klasse AWT, Swing, JavaFX & SWT 3
V kann ich in einer Klasse stage und scene deklarieren, aber in anderen Klassen Inhalte hinzufügen ? AWT, Swing, JavaFX & SWT 5
V JavaFX, Pane construktor von einer Klasse in der Main verwenden. AWT, Swing, JavaFX & SWT 4
S 2 paint-Methoden in einer Klasse ? AWT, Swing, JavaFX & SWT 2
W JavaFX Label in Controller-Klasse in einer anderen Controller-Klasse ändern AWT, Swing, JavaFX & SWT 9
X buttons aus externe klasse lesen? AWT, Swing, JavaFX & SWT 3
D Swing JTable- Meine Tabelle der Klasse JTable wird nur bedingt angezeigt AWT, Swing, JavaFX & SWT 4
M Gui in einer anderen Java Klasse aufrufen AWT, Swing, JavaFX & SWT 1
A Problem mit JFrame in separater Klasse AWT, Swing, JavaFX & SWT 3
A Swing bei Auswahl und klick eines JComboBox buttons die Klasse eines anderen Projekts aufrufen AWT, Swing, JavaFX & SWT 3
C Swing MenuBar als eigene Klasse AWT, Swing, JavaFX & SWT 4
D Nächste GUI in einer anderen Klasse aufrufen AWT, Swing, JavaFX & SWT 7
A Swing JTextArea aus anderer Klasse in realtime aktualisieren AWT, Swing, JavaFX & SWT 3
JavaInBrain Swing Rückgabe aus MouseListener-Klasse AWT, Swing, JavaFX & SWT 3
J Swing Nach SwingWorker Funktion aus der GUI Klasse aufrufen AWT, Swing, JavaFX & SWT 5
G JPanel aufrufen in andere Klasse AWT, Swing, JavaFX & SWT 2
G Window aus anderer Klasse aufrufen AWT, Swing, JavaFX & SWT 4
S klasse einbinden funktioniert nicht AWT, Swing, JavaFX & SWT 6
M JDialog übergibt eingaben nicht an aufrufende klasse AWT, Swing, JavaFX & SWT 15
B Zugriff auf JFrame obwohl die Klasse abgeleitet ist AWT, Swing, JavaFX & SWT 3
M Swing Array aus anderer Klasse AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben