web-dev-qa-db-fra.com

Comment enregistrer une BufferedImage en tant que fichier

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?

100
Ankur
File outputfile = new File("image.jpg");
ImageIO.write(bufferedImage, "jpg", outputfile);
196

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);
19
Raj Adroit

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:

  1. Crée un fichier appelé MyFile.png.
  2. L'image est de 500 par 500 pixels.
  3. Ecrase le fichier existant.
  4. La couleur de l'image est noire avec une bande bleue en haut.
9
Eric Leschinski
  1. Téléchargez et ajoutez imgscalr-lib-x.x.jar et imgscalr-lib-x.x-javadoc.jar à vos bibliothèques de projets.
  2. 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));
    
1
Zon

En une ligne:

ImageIO.write(Scalr.resize(ImageIO.read(...), 150));
0
Nicolas Modrzyk