jpg speziell verkleinern

aevo

Grünschnabel
Hi Leute ich hab mir schonmal etwas zusammengesucht, jedoch weiß ich net recht wie ich das umsetzten soll.

also erstmal hier:

Code:
	public static void main(String[] args) throws IOException {
		Image image = new ImageIcon("C:/Users/Aevo/Desktop/a/a.jpg").getImage();

		int width = 109, height = 126;

		BufferedImage targetImage = new BufferedImage(width, height, BufferedImage.SCALE_SMOOTH);

		Graphics g = targetImage.getGraphics();
                g.drawImage(image, 0, 0, width, height, null);
		g.dispose();

		ImageIO.write(targetImage, "jpeg", new File("C:/Users/Aevo/Desktop/a/b.jpg"));
	}

und da würde ich gerne nicht nur das Bild auf 109x126 verkleinern, denn jetzt kann es sein das es gestaucht oder gestreckt wird. wie kann ich es im korrekten Verhältnis verkleinern dass rechts und links wenn es übersteht abgeschnitten wird. Die Höhe von 126 soll immer sein.

danke schonmal
 
Und woran scheitert es nun?

Das ist doch nur ein wenig Mathematik. Gewünschte Höhe/Richtige Höhe. Dann diese Faktor mit der Breite multiplizieren. Dann kannst dus entsprechend im korrekten Verhältnis skalieren (getScaledInstance). Dann prüfst du ob die neue Breite größer ist als 109, teilst die Differenz durch 2 und schneidest den Überstand links und rechts ab (getSubimage).

Ahso. Lies das Bild am Besten mit ImageIO.read(File input) direkt in eine BufferedImage ein.
 

Neue Beiträge

Zurück