Câu trả lời nằm trong Hướng dẫn Viết / Lưu Hình ảnh của Tài liệu Java .
Các Image I/O
lớp học cung cấp các phương pháp sau đây để tiết kiệm một hình ảnh:
static boolean ImageIO.write(RenderedImage im, String formatName, File output) throws IOException
Hướng dẫn giải thích rằng
Lớp BufferedImage thực hiện giao diện RenderImage.
vì vậy nó có thể được sử dụng trong phương thức.
Ví dụ,
try {
BufferedImage bi = getMyImage(); // retrieve image
File outputfile = new File("saved.png");
ImageIO.write(bi, "png", outputfile);
} catch (IOException e) {
// handle exception
}
Điều quan trọng là phải bao quanh write
cuộc gọi bằng một khối thử bởi vì theo API , phương thức này đưa ra mộtIOException
"nếu có lỗi xảy ra trong quá trình ghi"
Cũng được giải thích chi tiết hơn về mục tiêu, tham số, trả về và ném của phương pháp:
Viết ảnh bằng ImageWriter tùy ý hỗ trợ định dạng nhất định cho một Tệp. Nếu đã có một tệp, nội dung của nó sẽ bị loại bỏ.
Thông số:
im - một Hình ảnh được kết xuất sẽ được viết.
formatName - một Chuỗi chứa tên không chính thức của định dạng.
đầu ra - một Tệp được ghi vào.
Lợi nhuận:
sai nếu không tìm thấy người viết thích hợp.
Ném:
IllegalArgumentException - nếu bất kỳ tham số nào là rỗng.
IOException - nếu lỗi xảy ra trong quá trình viết.
Tuy nhiên, formatName
có vẻ vẫn còn khá mơ hồ và mơ hồ; hướng dẫn rõ ràng hơn một chút:
Phương thức ImageIO.write gọi mã thực hiện PNG viết “trình cắm người viết PNG”. Thuật ngữ plug-in được sử dụng vì Image I / O có thể mở rộng và có thể hỗ trợ nhiều định dạng.
Nhưng các plugin định dạng hình ảnh tiêu chuẩn sau: JPEG, PNG, GIF, BMP và WBMP luôn có mặt.
Đối với hầu hết các ứng dụng, chỉ cần sử dụng một trong các plugin tiêu chuẩn này là đủ. Chúng có lợi thế là sẵn có.
Tuy nhiên, có những định dạng bổ sung mà bạn có thể sử dụng:
Lớp Image I / O cung cấp một cách để bổ sung hỗ trợ cho các định dạng bổ sung có thể được sử dụng và nhiều trình cắm như vậy tồn tại. Nếu bạn quan tâm đến định dạng tệp nào có sẵn để tải hoặc lưu trong hệ thống của mình, bạn có thể sử dụng các phương thức getReaderFormatNames và getWriterFormatNames của lớp ImageIO. Các phương thức này trả về một mảng chuỗi liệt kê tất cả các định dạng được hỗ trợ trong JRE này.
String writerNames[] = ImageIO.getWriterFormatNames();
Dãy tên được trả về sẽ bao gồm bất kỳ trình cắm bổ sung nào được cài đặt và bất kỳ tên nào trong số này có thể được sử dụng làm tên định dạng để chọn trình ghi hình ảnh.
Để có một ví dụ đầy đủ và thực tế, người ta có thể tham khảo ví dụ của Oracle SaveImage.java
.