답변:
File outputfile = new File("image.jpg");
ImageIO.write(bufferedImage, "jpg", outputfile);
NullPointerException
, 사용if (outputfile.exists())
클래스의 BufferedImage
쓰기 메소드를 사용하여 객체를 저장할 수 있습니다 javax.imageio.ImageIO
. 메서드의 서명은 다음과 같습니다.
public static boolean write(RenderedImage im, String formatName, File output) throws IOException
다음 im
은 RenderedImage
기록 될 formatName
형식의 비공식 이름 (예 : png)을 포함하는 문자열이며 output
기록 할 파일 객체입니다. PNG 파일 형식에 대한 방법의 사용 예는 다음과 같습니다.
ImageIO.write(image, "png", file);
대답은 Java Documentation의 Tutorial for Writing / Saving an Image에 있습니다.
이 Image I/O
클래스는 다음과 같은 이미지 저장 방법을 제공합니다.
static boolean ImageIO.write(RenderedImage im, String formatName, File output) throws IOException
튜토리얼은
BufferedImage 클래스는 RenderedImage 인터페이스를 구현합니다.
그래서 방법에 사용할 수 있습니다.
예를 들면
try {
BufferedImage bi = getMyImage(); // retrieve image
File outputfile = new File("saved.png");
ImageIO.write(bi, "png", outputfile);
} catch (IOException e) {
// handle exception
}
API 에 따라 메소드가 다음을 던지기 때문에 try 블록으로write
호출 을 둘러싸는 것이 중요합니다 .IOException
"작성하는 동안 오류가 발생하는 경우"를
또한 메서드의 목표, 매개 변수, 반환 및 throw에 대해서도 자세히 설명합니다.
주어진 형식을 지원하는 임의의 ImageWriter를 사용하여 이미지를 File에 씁니다. 이미 File이있는 경우 해당 내용은 삭제됩니다.
매개 변수 :
im-기록 될 RenderedImage
formatName-형식의 비공식 이름을 포함하는 문자열.
output-기록 할 파일.
보고:
적절한 작성자가 없으면 false입니다.
던졌습니다 :
IllegalArgumentException-매개 변수가 null 인 경우
IOException-쓰기 중에 오류가 발생한 경우
그러나 formatName
여전히 다소 모호하고 모호해 보일 수 있습니다. 튜토리얼은 그것을 약간 정리합니다.
ImageIO.write 메서드는 "PNG writer 플러그인"을 작성하는 PNG를 구현하는 코드를 호출합니다. 플러그인이라는 용어는 이미지 I / O가 확장 가능하고 다양한 형식을 지원할 수 있기 때문에 사용됩니다.
그러나 JPEG, PNG, GIF, BMP 및 WBMP와 같은 표준 이미지 형식 플러그인은 항상 존재합니다.
대부분의 응용 프로그램에서는 이러한 표준 플러그인 중 하나를 사용하는 것으로 충분합니다. 그들은 쉽게 사용할 수 있다는 장점이 있습니다.
그러나 사용할 수있는 추가 형식이 있습니다.
Image I / O 클래스는 사용할 수있는 추가 형식에 대한 지원을 플러그인하는 방법을 제공하며 이러한 플러그인이 많이 존재합니다. 시스템에서로드하거나 저장할 수있는 파일 형식에 관심이있는 경우 ImageIO 클래스의 getReaderFormatNames 및 getWriterFormatNames 메서드를 사용할 수 있습니다. 이러한 메서드는이 JRE에서 지원되는 모든 형식을 나열하는 문자열 배열을 반환합니다.
String writerNames[] = ImageIO.getWriterFormatNames();
반환 된 이름 배열에는 설치된 추가 플러그인이 포함되며 이러한 이름은 이미지 작성기를 선택하기위한 형식 이름으로 사용될 수 있습니다.
완전하고 실용적인 예는 Oracle의 예를 참조 할 수 있습니다 SaveImage.java
.
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();
}
}
}
노트:
코드에서 :
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));