저는 (서버 측 디렉토리에) 이미지 파일을 만드는 데 사용하려는 Processing 스케치와 관련된 문제로 고심하고 있습니다. 자바에서는 캔버스의 PImage를 사용하여 BufferedImage로 변환 한 다음 ImageIO.write를 통해 파일로 만듭니다.애플릿이 ImageIO.write를 통해 이미지 파일을 만들지 않습니다.
내 시스템에서 스케치로 실행하면 파일이 성공적으로 생성되며 file.png는 프로그램과 동일한 폴더에 나타납니다. 문제는 프로그램을 애플릿으로 내 보내면 더 이상 파일을 만들지 않는다는 것입니다. 누구나 프로그램의 스케치가 이미지를 만들 수 있지만 애플릿이 왜 그렇게 할 수 없는지에 대한 의견이 있다면 거대합니다.
다음은 몇 가지 도움이 필요한 경우 사용하고있는 몇 가지 스 니펫입니다. 모두에게 감사드립니다.
PImage pimg = get();
BufferedImage canvas = convertToBufferedImage(pimg);
File file = new File("./sketch/file.png");
try
{
ImageIO.write(canvas, "PNG", file);
}
catch (Exception e) { println(e); }
그리고 다음은 PImage를 BufferedImage로 변환하는 방법입니다.
BufferedImage convertToBufferedImage(PImage pimg){
PGraphics pg = createGraphics(width, height, JAVA2D);
pg.image(pimg, 0, 0);
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB_PRE);
Graphics2D g2d = img.createGraphics();
g2d.drawImage((java.awt.Image)pg.image, 0, 0, width, height, this);
g2d.finalize();
g2d.dispose();
return img;
}
변경시 예외는 없습니다. 애플릿은 정상적으로 실행되지만 디렉토리에는 이미지 파일이 생성되지 않습니다. 또 다른 이상한 점은 그것이 스케치 일 때 경로가 단지 "file.png"일 경우 부모 디렉토리에 실제로 파일을 생성하므로 경로를 "./sketch/file.png"로 유지해야합니다. 스케치와 같은 디렉토리에 있습니다. 애플릿으로 내보낼 때, "./applet/file.png"또는 단순히 "file.png"로 변경하면 여전히 볼 수 없습니다. – Scott
시도해보십시오. 스케치로 실행하면 true를 반환하고 .png 파일이 성공적으로 생성되었습니다. 애플릿으로 실행할 때 나는 여전히 오류가 없다. – Scott
애플릿은 서버 측 파일에 액세스 할 수 없습니다. 그렇게하고 싶다면 서블릿을 작성해야한다. – OrangeDog