如何将一个BufferedImage保存为一个文件

我正在使用imgscalr Java库来调整图像大小。

resize()方法调用的结果是一个BufferedImage对象。 我现在想把它保存为一个文件(通常是.jpg)。

我怎样才能做到这一点? 我想从BufferedImage – > File去,但也许这不是正确的方法?

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

您可以使用javax.imageio.ImageIO类的write方法保存一个BufferedImage对象。 方法的签名是这样的:

 public static boolean write(RenderedImage im, String formatName, File output) throws IOException 

这里im是要写入的RenderedImageformatName是包含格式非正式名称的string(例如png), output是要写入的文件对象。 下面显示了用于PNG文件格式的示例用法:

 ImageIO.write(image, "png", file); 

创build并保存一个java.awt.image.bufferedImage文件:

 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(); } } } 

笔记:

  1. 创build一个名为MyFile.png的文件。
  2. 图像是500×500像素。
  3. 覆盖现有的文件。
  4. 图像的颜色是黑色,顶部是蓝色条纹。
  1. 下载并将imgscalr-lib-xxjar和imgscalr-lib-xx-javadoc.jar添加到您的项目库中。
  2. 在你的代码中:

     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)); 

作为一个class轮:

 ImageIO.write(Scalr.resize(ImageIO.read(...), 150));