如何将一个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
是要写入的RenderedImage
, formatName
是包含格式非正式名称的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(); } } }
笔记:
- 创build一个名为MyFile.png的文件。
- 图像是500×500像素。
- 覆盖现有的文件。
- 图像的颜色是黑色,顶部是蓝色条纹。
- 下载并将imgscalr-lib-xxjar和imgscalr-lib-xx-javadoc.jar添加到您的项目库中。
-
在你的代码中:
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));