J'utilise la bibliothèque imgscalr Java pour redimensionner une image.
Le résultat d'un appel de méthode resize () est un objet BufferedImage. Je veux maintenant enregistrer cela dans un fichier (généralement .jpg).
Comment puis je faire ça? Je veux partir de BufferedImage
-> File
mais peut-être que ce n'est pas la bonne approche?
File outputfile = new File("image.jpg");
ImageIO.write(bufferedImage, "jpg", outputfile);
Vous pouvez enregistrer un objet BufferedImage
en utilisant la méthode write de javax.imageio.ImageIO
class. La signature de la méthode est la suivante:
public static boolean write(RenderedImage im, String formatName, File output) throws IOException
Ici im
est la RenderedImage
à écrire, formatName
est la chaîne contenant le nom informel du format (par exemple, png) et output
est l’objet de fichier dans lequel écrire. Un exemple d'utilisation de la méthode pour le format de fichier PNG est présenté ci-dessous:
ImageIO.write(image, "png", file);
Créez et enregistrez un fichier Java.awt.image.bufferedImage dans un fichier:
import Java.io.*;
import Java.awt.image.*;
import javax.imageio.*;
public class Main{
public static void main(String args[]){
try{
BufferedImage img = new BufferedImage(
500, 500, BufferedImage.TYPE_INT_RGB );
File f = new File("MyFile.png");
int r = 5;
int g = 25;
int b = 255;
int col = (r << 16) | (g << 8) | b;
for(int x = 0; x < 500; x++){
for(int y = 20; y < 300; y++){
img.setRGB(x, y, col);
}
}
ImageIO.write(img, "PNG", f);
}
catch(Exception e){
e.printStackTrace();
}
}
}
Remarques:
Dans votre code:
import static org.imgscalr.Scalr.*;
public static BufferedImage resizeBufferedImage(BufferedImage image, Scalr.Method scalrMethod, Scalr.Mode scalrMode, int width, int height) {
BufferedImage bi = image;
bi = resize( image, scalrMethod, scalrMode, width, height);
return bi;
}
// Save image:
ImageIO.write(Scalr.resize(etotBImage, 150), "jpg", new File(myDir));
En une ligne:
ImageIO.write(Scalr.resize(ImageIO.read(...), 150));