JavaFX8에 표시된 이미지를 파일에 저장
"데이터 시각화 프로그램을 만들려면 파이톤+matplotlib이 좋지 않습니까?"
주위에서는 조금이라도 대항할 수 있도록 먼저 비교적 아름다운 도표를 그리고 각종 양식의 보존 방법을 조사해 보라는 말이 많다.
코드는 https://github.com/miyo/javafx_test/tree/master/SimpleCalc에 있습니다.
SimpleCalc의 이름과 반대로 계산기 기능이 없습니다. 숫자 키를 누르면 그래프, Canvas 등에 데이터가 적절히 삽입됩니다. 코드 슬라이스는 Working with JavaFX Chart에서 빌려 쓰십시오. 적당히 그리면 Save를 누르면 모든 그래프와 Canvas의 데이터는 png, jpeg, PDF에 저장됩니다.실험을 위한 코드입니다.
GUI 프레임워크
SceneBuilder로 하면 쉬워요. 많이 생각하면 귀찮아요.
간, 간
(1) Java 코드를 작업 객체로 사용할 객체에 미리 ID 추가
(2) GUI 구성 요소에 대한 작업을 Java 프로그램에 알리려면 미리 처리 방법 이름을 정의합니다.
두 개.
차트 또는 이미지 그리기
그래프에 데이터를 포함하면 됩니다. XYChart의 한 쌍이 문자인지 숫자인지는 SceneBuilder 측에서 결정합니까?코드로 만들 때 지정할 수 있을 것 같은데...어쨌든 상대방을 화나게 하지 않는 설정.
디스플레이 이미지 가져오기
Writable Image는 차트, Canvas 등 상위 노드에 정의된 snapshot에서 사용할 수 있습니다.
이상.
기존의 이미지 작업 라이브러리에서 BufferedImage로 변환하려면 SwingFXUtils를 사용하십시오.fromFXImage를 사용하면 될 것 같습니다. 참고로 반대의 toFXImage도 준비했습니다.
파일에 이미지 저장
JavaFX인지 ImageIO인지 훌륭하다고 JavaFX 2 Snapshot as PNG Image에 단도직입적으로 적혀 있다.private boolean saveImage(WritableImage img, String base, String fmt) throws IOException{
File f = new File(base + "." + fmt);
return ImageIO.write(SwingFXUtils.fromFXImage(img, null), fmt, f);
}
fmt에서 문자열에 png이나 jpg 등을 지정하고, pdf 같은 형식은 반환값의 가짜로 지정할 수 없습니다.
PDF에 저장
사용PDFBox은 아주 간단한 것 같습니다. 2.0.0-CRC2.를 시도해 보았습니다. 참고로 실행할 때 Apache Commons Logging 경로를 통과하지 못하면 오류가 발생할 수 있으므로 주의해야 합니다(Logging 컴파일링이 없어도 통과할 수 있습니다).
코드는 이런 느낌입니다.private void saveAsPDF(WritableImage img, String base) throws IOException{
PDDocument doc = null;
PDPage page = null;
PDImageXObject ximage = null;
try {
doc = new PDDocument();
page = new PDPage();
doc.addPage(page);
PDPageContentStream content = new PDPageContentStream(doc, page);
ximage = LosslessFactory.createFromImage(doc, SwingFXUtils.fromFXImage(img, null));
content.drawImage(ximage, 20, 20);
content.close();
} catch(IOException ie) {
}
doc.save(new File(base + ".pdf"));
doc.close();
}
웹에서 PDFBox2를 읽어들입니다.0.0 이전 샘플은 PDImageXObject가 아니라 PDXObjectImage입니다.
과도 방법은 Add BufferedImage to PDFBox document에 쓰여 있다.
먼저 잘 보관하고 사이즈의 가장자리를 고려하지 않으니 방법을 생각해 봐야겠다.
겸사겸사 이런 느낌
Migration to PDFBox 2.0.0
글의 첫머리에서 말한 바와 같이 이것은 실험 절차로 의미가 없다.
Reference
이 문제에 관하여(JavaFX8에 표시된 이미지를 파일에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/miyox/items/f4a9c5046623600ab90c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
그래프에 데이터를 포함하면 됩니다. XYChart의 한 쌍이 문자인지 숫자인지는 SceneBuilder 측에서 결정합니까?코드로 만들 때 지정할 수 있을 것 같은데...어쨌든 상대방을 화나게 하지 않는 설정.
디스플레이 이미지 가져오기
Writable Image는 차트, Canvas 등 상위 노드에 정의된 snapshot에서 사용할 수 있습니다.
이상.
기존의 이미지 작업 라이브러리에서 BufferedImage로 변환하려면 SwingFXUtils를 사용하십시오.fromFXImage를 사용하면 될 것 같습니다. 참고로 반대의 toFXImage도 준비했습니다.
파일에 이미지 저장
JavaFX인지 ImageIO인지 훌륭하다고 JavaFX 2 Snapshot as PNG Image에 단도직입적으로 적혀 있다.private boolean saveImage(WritableImage img, String base, String fmt) throws IOException{
File f = new File(base + "." + fmt);
return ImageIO.write(SwingFXUtils.fromFXImage(img, null), fmt, f);
}
fmt에서 문자열에 png이나 jpg 등을 지정하고, pdf 같은 형식은 반환값의 가짜로 지정할 수 없습니다.
PDF에 저장
사용PDFBox은 아주 간단한 것 같습니다. 2.0.0-CRC2.를 시도해 보았습니다. 참고로 실행할 때 Apache Commons Logging 경로를 통과하지 못하면 오류가 발생할 수 있으므로 주의해야 합니다(Logging 컴파일링이 없어도 통과할 수 있습니다).
코드는 이런 느낌입니다.private void saveAsPDF(WritableImage img, String base) throws IOException{
PDDocument doc = null;
PDPage page = null;
PDImageXObject ximage = null;
try {
doc = new PDDocument();
page = new PDPage();
doc.addPage(page);
PDPageContentStream content = new PDPageContentStream(doc, page);
ximage = LosslessFactory.createFromImage(doc, SwingFXUtils.fromFXImage(img, null));
content.drawImage(ximage, 20, 20);
content.close();
} catch(IOException ie) {
}
doc.save(new File(base + ".pdf"));
doc.close();
}
웹에서 PDFBox2를 읽어들입니다.0.0 이전 샘플은 PDImageXObject가 아니라 PDXObjectImage입니다.
과도 방법은 Add BufferedImage to PDFBox document에 쓰여 있다.
먼저 잘 보관하고 사이즈의 가장자리를 고려하지 않으니 방법을 생각해 봐야겠다.
겸사겸사 이런 느낌
Migration to PDFBox 2.0.0
글의 첫머리에서 말한 바와 같이 이것은 실험 절차로 의미가 없다.
Reference
이 문제에 관하여(JavaFX8에 표시된 이미지를 파일에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/miyox/items/f4a9c5046623600ab90c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
JavaFX인지 ImageIO인지 훌륭하다고 JavaFX 2 Snapshot as PNG Image에 단도직입적으로 적혀 있다.
private boolean saveImage(WritableImage img, String base, String fmt) throws IOException{
File f = new File(base + "." + fmt);
return ImageIO.write(SwingFXUtils.fromFXImage(img, null), fmt, f);
}
fmt에서 문자열에 png이나 jpg 등을 지정하고, pdf 같은 형식은 반환값의 가짜로 지정할 수 없습니다.PDF에 저장
사용PDFBox은 아주 간단한 것 같습니다. 2.0.0-CRC2.를 시도해 보았습니다. 참고로 실행할 때 Apache Commons Logging 경로를 통과하지 못하면 오류가 발생할 수 있으므로 주의해야 합니다(Logging 컴파일링이 없어도 통과할 수 있습니다).
코드는 이런 느낌입니다.private void saveAsPDF(WritableImage img, String base) throws IOException{
PDDocument doc = null;
PDPage page = null;
PDImageXObject ximage = null;
try {
doc = new PDDocument();
page = new PDPage();
doc.addPage(page);
PDPageContentStream content = new PDPageContentStream(doc, page);
ximage = LosslessFactory.createFromImage(doc, SwingFXUtils.fromFXImage(img, null));
content.drawImage(ximage, 20, 20);
content.close();
} catch(IOException ie) {
}
doc.save(new File(base + ".pdf"));
doc.close();
}
웹에서 PDFBox2를 읽어들입니다.0.0 이전 샘플은 PDImageXObject가 아니라 PDXObjectImage입니다.
과도 방법은 Add BufferedImage to PDFBox document에 쓰여 있다.
먼저 잘 보관하고 사이즈의 가장자리를 고려하지 않으니 방법을 생각해 봐야겠다.
겸사겸사 이런 느낌
Migration to PDFBox 2.0.0
글의 첫머리에서 말한 바와 같이 이것은 실험 절차로 의미가 없다.
Reference
이 문제에 관하여(JavaFX8에 표시된 이미지를 파일에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/miyox/items/f4a9c5046623600ab90c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
private void saveAsPDF(WritableImage img, String base) throws IOException{
PDDocument doc = null;
PDPage page = null;
PDImageXObject ximage = null;
try {
doc = new PDDocument();
page = new PDPage();
doc.addPage(page);
PDPageContentStream content = new PDPageContentStream(doc, page);
ximage = LosslessFactory.createFromImage(doc, SwingFXUtils.fromFXImage(img, null));
content.drawImage(ximage, 20, 20);
content.close();
} catch(IOException ie) {
}
doc.save(new File(base + ".pdf"));
doc.close();
}
Migration to PDFBox 2.0.0
글의 첫머리에서 말한 바와 같이 이것은 실험 절차로 의미가 없다.
Reference
이 문제에 관하여(JavaFX8에 표시된 이미지를 파일에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/miyox/items/f4a9c5046623600ab90c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)