Comment redimensionner une image en Java
En Java, pour redimensionner (ou mettre à l’échelle) une image et l’enregistrer, nous pouvons suivre les étapes suivantes:
- Créez un objet BufferedImage pour l’image d’entrée en appelant la méthode read() de la classe ImageIO.
- Créez un objet BufferedImage pour l’image de sortie avec une largeur et une hauteur souhaitées.
- Obtenez un objet Graphics2D à partir de l’objet BufferedImage de l’image de sortie.
- Dessinez l’objet BufferedImage de l’image d’entrée sur l’objet Graphics2D de l’image de sortie.
- Enregistrez l’image de sortie dans un fichier en utilisant la méthode write() de la classe ImageIO.
Exemple:
import java.awt.Graphics2D; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import java.io.*; public class ResizeImg { public static void changeSize(String inImg, String outImg, int w, int h) throws IOException { // lit l'image d'entrée File f = new File(inImg); BufferedImage inputImage = ImageIO.read(f); // crée l'image de sortie BufferedImage img = new BufferedImage(w, h, inputImage.getType()); // balancer l'image d'entrée à l'image de sortie Graphics2D g = img.createGraphics(); g.drawImage(inputImage, 0, 0, w, h, null); g.dispose(); // extrait l'extension du fichier de sortie String name = outImg.substring(outImg.lastIndexOf(".") + 1); // écrit dans le fichier de sortie ImageIO.write(img, name, new File(outImg)); } public static void main(String[] args) { String inImg = "test.jpg"; String outImg = "test_1200x628.jpg"; try { int width = 1200; int height = 628; ResizeImg.changeSize(inImg, outImg, width, height); } catch (IOException ex) { ex.printStackTrace(); } } }