Hallo,
ich würde gerne ein Bild der Größe, z.B. 1842x834 auf 800x600 skalieren. Dazu soll aber das Seitenverhältnis beibehalten werden. Somit wird das neu skalierte Bild sicher nicht 800x600 haben. Dazu möchte ich das große Bild entsprechend skalieren und das neue Bild in die Mitte eines 800x600 großen Bild speichern.
Meine Frage: Wie funktioniert das? Den Skalierungsfaktor usw. und die Position zu berechnen, ist kein Problem ist. Das wird mit den Methoden getBreiteN() usw. erledigt.
Wenn dann z.B. 800x533 rauskommt, weiß ich nicht, wie das endgültige Bild dann 800x600 hat.
Anbei der Code
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ResizeImageExample {
private static BildRechnen b;
public static void main(String... args) throws IOException {
b = new BildRechnen();
File input = new File("E:\\Workspace\\Homepage_Bilder\\src\\Bildgroß.png");
BufferedImage image = ImageIO.read(input);
BufferedImage resized = resize(image, b.getHoeheN(), b.getBreiteN());
System.out.println("breite: " + b.getBreiteN());
File output = new File("E:\\Workspace\\Homepage_Bilder\\Bildklein.png");
ImageIO.write(resized, "png", output);
}
private static BufferedImage resize(BufferedImage img, int height, int width) {
//Image tmp = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);
BufferedImage resized = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = resized.createGraphics();
Image tmp = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);
//Image tmp = new BufferedImage(800, 600, 2);
g2d.drawImage(tmp, b.getX(), b.getY(), null);
g2d.dispose();
return resized;
}
}
ich würde gerne ein Bild der Größe, z.B. 1842x834 auf 800x600 skalieren. Dazu soll aber das Seitenverhältnis beibehalten werden. Somit wird das neu skalierte Bild sicher nicht 800x600 haben. Dazu möchte ich das große Bild entsprechend skalieren und das neue Bild in die Mitte eines 800x600 großen Bild speichern.
Meine Frage: Wie funktioniert das? Den Skalierungsfaktor usw. und die Position zu berechnen, ist kein Problem ist. Das wird mit den Methoden getBreiteN() usw. erledigt.
Wenn dann z.B. 800x533 rauskommt, weiß ich nicht, wie das endgültige Bild dann 800x600 hat.
Anbei der Code
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ResizeImageExample {
private static BildRechnen b;
public static void main(String... args) throws IOException {
b = new BildRechnen();
File input = new File("E:\\Workspace\\Homepage_Bilder\\src\\Bildgroß.png");
BufferedImage image = ImageIO.read(input);
BufferedImage resized = resize(image, b.getHoeheN(), b.getBreiteN());
System.out.println("breite: " + b.getBreiteN());
File output = new File("E:\\Workspace\\Homepage_Bilder\\Bildklein.png");
ImageIO.write(resized, "png", output);
}
private static BufferedImage resize(BufferedImage img, int height, int width) {
//Image tmp = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);
BufferedImage resized = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = resized.createGraphics();
Image tmp = img.getScaledInstance(width, height, Image.SCALE_SMOOTH);
//Image tmp = new BufferedImage(800, 600, 2);
g2d.drawImage(tmp, b.getX(), b.getY(), null);
g2d.dispose();
return resized;
}
}