Swing ImageIcon Resizing

Basti4231

Bekanntes Mitglied
Hey Leute,

ich hätte gerne am Ende, dass ich eine Methode habe, die die Größe eines ImageIcons verändern kann.

Man kann ja auf ein Image getScaledInstance() sagen und bekommt ja auch das Image mit veränderter Größe zurück. Aber ich will meinem Frame/Panel ja das Teil hinzufügen.
Muss ich es unbedingt über Graphics2D zeichnen, oder ist es irgendwie möglich eine Component draus zu machen, damit ich es einfach über frame.add() hinzufügen kann?

Sowas wie:

Java:
new JLabel(new ImageIcon("blubbpfad");
damit ich es auf mein Panel hinzufügen kann.

lg basti
 

Basti4231

Bekanntes Mitglied
Das Panel wird zwar kleiner, die Sache ist aber, dass mein JLabel mit beinhaltendem ImageIcon nicht angepasst wird. Es wird quasi nur abgeschnitten.

Aber ich schau mir jetz mal den Artikel noch an, thx für den Link.
 

Basti4231

Bekanntes Mitglied
Mir ist gerade noch eine andere Idee gekommen.
Also ich habe diese ganzen Bilder, die ich benötige, in einem Ordner.
Dann könnte ich doch auch anstatt beim Zeichnen n resize zu machen, sie einfach gleich in Java von der Größe her ändern und dann wieder zu speichern bzw. schreiben.
 

Basti4231

Bekanntes Mitglied
Also die Größe der Bilder ändert sich niemals. Es war jetzt nur so, dass ich festgestellt habe, ich habe nicht genug Platz für meine Bilder und daher mache ich sie einfach ein bisschen kleiner.
Ist ein Kartenspiel, was ich da am Start habe...

Vielleicht kannst du kurz skype oder icq kommen, ich habe dich geaddet... (falls du noch bissl Zeit hast)

lg basti :)
 

XHelp

Top Contributor
Nö, in Messengern ist für heute Feierabend. Außerdem ist der Sinn des Forums, dass die Lösung auch für die Nachwelt erhalben bleibt, in IM darüber zu reden würde unter dem Gesichtspunkt kein Nutzen bringen.
Stell deine Fragen hier, dann können auch mehrere antworten
 

Basti4231

Bekanntes Mitglied
Ja stimmt, macht Sinn. Habe ich mir auch eben gedacht, aber IM is halt schnell :p

Aber hier is auch schon wirklich überdurchschnittlich schnell, was verdammt geil ist ;)


Ok ich hätte jetzt daran gedacht, einfach ein Programm zu schreiben, dass Bilder aus einem Ordner sich nimmt und jedes einzelne in der Größe ändert und dann wieder abspeichert.
Falls ich irgendwann nämlich Bilder noch hinzufügen muss, kann ich einfach das Progrämmchen laufen lassen und dann hab ich alle Bilder in einheitlicher Größe.

Falls jemand, sowas Ähnliches schonmal gemacht hat, wäre ein Tutorial etc. sehr cool...

lg Basti :)
 
V

vanny

Gast
Also dein Problem ist mir noch nicht ganz klar.
Willst du die Bildgröße nun dynamisch haben oder einfach nur kleiner aber eine statische Größe?

Bei Variante Nr. 2 bringst du die Bilder gleich in die Richtige Größe (also extern) und gut is.

Wenn die Größe jedoch dynamisch sein soll, würde ich vor der "neu-abspeichern-Methode" abraten.
Solange die Bilder verkleinert werden, mag das ja gehen aber dann die kleinen Bilder wieder vergrößern, bedeutet Qualitätsverlust.
In diesem Fall ist es ratsam, die Bilddateien im großen Format vorzuhalten und dann im Speicher zu verkleinern um die Darstellungsqualität zu gewährleisten.

Codebeispiel bring ich aber erst morgen, bin heut schon zu sehr mit durch:oops:

Gruß Vanny
 

Basti4231

Bekanntes Mitglied
Ja ich möchte die größe einfach statisch haben und kleiner.

Ich hab mich schon dran versucht Bilder zu ändern und die dann zu schreiben.
Es hat auch geklappt, aber ich hatte so hohen Qualitätsverlust beim verkleinern, dass es mir zu hässlich wurde^^
Ich bin gespannt auf dein Beispiel :)

lg und bis später (sehr später :p)
 

bERt0r

Top Contributor
SirWayne hat gesagt.:
nimm ein JPanel für deinen hintergrund und überschreib die methode
Code:

public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(img,0,0,getWidht(),getHeigth(),null);
}
Steht doch alles in XHelps link. Die Bilder jetzt extra nochmal speichern ist nur zusätzliche/überflüssige Arbeit für dich.
 
V

vanny

Gast
Generell muss ich meinen Vorrednern recht geben, die Lösung ist schnell und sauber.

Die Fragestellung hier war jedoch, wie man das ImageIcon vekleinern kann.
Eine Möglichkeit wäre das hier:

Java:
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;

public class ImageIconVerkleinern {

	private BufferedImage img;
	private File f;
	private ImageIcon ico;

	public JLabel getNewLabel(String pfad, String dateiName, JLabel lbl) {
		f = new File(pfad + dateiName);

		try {
			img = ImageIO.read(f);
		} catch (IOException e) {
			e.printStackTrace();
		}

		if (img != null) {

			AffineTransform transform = AffineTransform.getScaleInstance(0.2, 0.2);// oder was für einen Faktor du benötigst
			AffineTransformOp op = new AffineTransformOp(transform, null);

			BufferedImage thumb = op.filter(img, null);
			ico = new ImageIcon(thumb);
			lbl.setIcon(ico);
		}

		return lbl;
	}
}

Habs jetzt nicht getestet, sollte aber funktionieren.

Gruß Vanny
 
Zuletzt bearbeitet von einem Moderator:

bERt0r

Top Contributor
Oder gleich
Java:
ImageIcon icon=new ImageIcon("icon.jpg");
Image image=icon.getImage.getScaledInstance(10,10,Image.SCALE_IRGENDWIE);
icon.setImage(image);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B ImageIcon auf JPanel austauschen AWT, Swing, JavaFX & SWT 3
C Swing ImageIcon erstellen, skalieren und verwenden AWT, Swing, JavaFX & SWT 3
N imageIcon zeigt kein Bild an AWT, Swing, JavaFX & SWT 5
P Swing Mehrere JLabels mit ImageIcon in JPanel lesen AWT, Swing, JavaFX & SWT 1
F JLabel mit ImageIcon per Button bewegen AWT, Swing, JavaFX & SWT 4
CptK Swing Button: ImageIcon unter den Text AWT, Swing, JavaFX & SWT 4
cool_brivk24 Swing ImageIcon lädt kein Bild AWT, Swing, JavaFX & SWT 12
P Kein Bild wird angezeigt bei ImageIcon AWT, Swing, JavaFX & SWT 16
S Bild mit ImageIcon auf GUI verkleinern AWT, Swing, JavaFX & SWT 3
K Swing JTable mit ImageIcon und Text in einer Zelle AWT, Swing, JavaFX & SWT 1
L ImageIcon auf JPanel wird nicht angezeigt(keiner Fehlermeldung) AWT, Swing, JavaFX & SWT 11
stylegangsta JButton Fehelr javax.swing.ImageIcon.<init>(Unknown Source) AWT, Swing, JavaFX & SWT 24
L JButton mit ImageIcon/Fehlermeldung AWT, Swing, JavaFX & SWT 1
Tausendsassa ImageIcon?! Hilfe! AWT, Swing, JavaFX & SWT 10
S JLabel mit ImageIcon, komischer Rahmen? AWT, Swing, JavaFX & SWT 2
O ImageIcon lädt nicht AWT, Swing, JavaFX & SWT 2
kaoZ Swing JToolBar, ImageIcon werden teilweise verdeckt AWT, Swing, JavaFX & SWT 0
R ImageIcon - Über Socket AWT, Swing, JavaFX & SWT 1
P ImageIcon lade schlägt fehl AWT, Swing, JavaFX & SWT 5
B Repaint auf JFrame, JLabel und ImageIcon AWT, Swing, JavaFX & SWT 4
S JLabel zeigt ImageIcon nicht AWT, Swing, JavaFX & SWT 13
B ImageIcon - Probleme mit dem Dateipfad AWT, Swing, JavaFX & SWT 5
C Swing ImageIcon mit Bild aus Temp-Verzeichniss füllen AWT, Swing, JavaFX & SWT 15
P ImageIcon auf Rectangle AWT, Swing, JavaFX & SWT 3
C ImageIcon eines Labels auf einem Panel in neuem Fenster anzeigen AWT, Swing, JavaFX & SWT 2
A Swing ImageIcon hover AWT, Swing, JavaFX & SWT 9
M ImageIcon Bild wird beim verkleinern des Fensters nicht verkleinert AWT, Swing, JavaFX & SWT 3
S ImageIcon von Label entfernen AWT, Swing, JavaFX & SWT 9
B Warten bis neues ImageIcon zugewiesen ist AWT, Swing, JavaFX & SWT 3
Zettelkasten imageIcon-Rand wegmachen AWT, Swing, JavaFX & SWT 5
S Abspeichern aus einem ImageIcon ins korrekte Format AWT, Swing, JavaFX & SWT 2
J ImageIcon: ZipException bei ungültiger PNG-Datei AWT, Swing, JavaFX & SWT 2
S ImageIcon Grösse anpassen AWT, Swing, JavaFX & SWT 2
J Geladene Grafik in ImageIcon auf Panel fest positionern. AWT, Swing, JavaFX & SWT 8
badfish Swing ImageIcon auf JLabel, Fenster Maximieren verbieten und Icon oben links austauschen? AWT, Swing, JavaFX & SWT 5
B Problem mit imageIO und ImageIcon AWT, Swing, JavaFX & SWT 5
M Swing ImageIcon über JFileChooser einbinden AWT, Swing, JavaFX & SWT 4
C Swing JComboBox - Problem bei Darstellen von ImageIcon AWT, Swing, JavaFX & SWT 4
G ImageIcon viel zu groß AWT, Swing, JavaFX & SWT 2
G IMageIcon Bildgröße ändern AWT, Swing, JavaFX & SWT 7
isowiz Leeres ImageIcon einer bes timmten Größe erzeugen AWT, Swing, JavaFX & SWT 2
W ImageIcon im JLabel mit autosize? AWT, Swing, JavaFX & SWT 3
B ImageIcon JFrame AWT, Swing, JavaFX & SWT 3
M ImageIcon auf AbstractButton links-/rechtbündig AWT, Swing, JavaFX & SWT 2
D jButton mit ImageIcon & MouseListener AWT, Swing, JavaFX & SWT 5
M ImageIcon in JLabel verkleinern AWT, Swing, JavaFX & SWT 8
S n-e-w JLabel(n-e-w ImageIcon(i)) funkt. nicht im JScrollPane AWT, Swing, JavaFX & SWT 2
M Problem, an ImageIcon in JPanels zu kommen. AWT, Swing, JavaFX & SWT 2
J Bildfilterung und Ausgabe in ein ImageIcon AWT, Swing, JavaFX & SWT 2
X ImageIcon für JButton AWT, Swing, JavaFX & SWT 4
X JButton "effect" für ImageIcon AWT, Swing, JavaFX & SWT 6
F ImageIcon -> BufferedImage AWT, Swing, JavaFX & SWT 2
T ImageIcon als Seperator im Jmenu AWT, Swing, JavaFX & SWT 8
G JLabel und ImageIcon AWT, Swing, JavaFX & SWT 16
padde479 ImageIcon laden AWT, Swing, JavaFX & SWT 6
L Anzeigen von fotos: ImageIcon oder BufferedImage + paint() ? AWT, Swing, JavaFX & SWT 5
J ImageIcon, Image - 100% CPU Auslastung . AWT, Swing, JavaFX & SWT 3
B imageicon relativer Pfad AWT, Swing, JavaFX & SWT 5
F ImageIcon Größe ändern AWT, Swing, JavaFX & SWT 29
M ImageIcon / .paintIcon() AWT, Swing, JavaFX & SWT 2
M Problem mit ImageIcon in einer JTable AWT, Swing, JavaFX & SWT 2
D JButton einen neuen ImageIcon setzen? AWT, Swing, JavaFX & SWT 2
R resize ImageIcon AWT, Swing, JavaFX & SWT 7
B Problem mit ImageIcon/Swing in Linux AWT, Swing, JavaFX & SWT 6
K ImageIcon fehler ? AWT, Swing, JavaFX & SWT 4
M ImageIcon laden? AWT, Swing, JavaFX & SWT 2
E JFrame resizing AWT, Swing, JavaFX & SWT 2
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
D Swing Probleme mit dem Resizing AWT, Swing, JavaFX & SWT 7
J JTable bounds ändern durch resizing des Fensters AWT, Swing, JavaFX & SWT 9
X Swing Resizing der Komponenten innheralb eines Panels AWT, Swing, JavaFX & SWT 2
E LayoutManager GridBagLayout in BorderLayout - Abstand bei Resizing AWT, Swing, JavaFX & SWT 2
H JScrollPane (mit JEditorpane ) resizing AWT, Swing, JavaFX & SWT 2
F Resizing-Probleme AWT, Swing, JavaFX & SWT 10
G Resizing Probleme AWT, Swing, JavaFX & SWT 2
M JScrollPane auf JPanel - Resizing - Größe verändern AWT, Swing, JavaFX & SWT 10
G Resizing Probleme bei JInternalFrames AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben