JavaFX преобразование WritableImage в изображение
Я делаю некоторое приложение, которое делает скриншот LineChart
и сохраните его в pdf. Поэтому я не знаю гладкого способа преобразования WritableImage
(JavaFX 2.2) до Image
(iText lib).
мое временное решение
- чтобы сделать снимок, затем
- скачать
WritableImage
из этого снимка - записать изображение в png-файл
- открыть изображение и сделать объект iText
Image
Я бы хочу внести некоторые изменения: я не хочу писать png
файл на диск, я просто хочу, чтобы снимок был записан в pdf.
мое временное решение:
WritableImage wim = new WritableImage((int) lineChart.getWidth(),(int) lineChart.getHeight());
Scene scena = primaryStage.getScene();
scena.snapshot(wim);
File fileA = new File("C://Graphs/chart.png");
try {
ImageIO.write(SwingFXUtils.fromFXImage(wim, null), "png", fileA);
}
catch (Exception s) {
}
pdfDocument.add(preface3);
com.itextpdf.text.Image graph =com.itextpdf.text.Image.getInstance("C://Graphs/chart.png");
pdfDocument.add((com.itextpdf.text.Element) graph);
2 ответов
использование:
ByteArrayOutputStream byteOutput = new ByteArrayOutputStream();
ImageIO.write( SwingFXUtils.fromFXImage( wim, null ), "png", byteOutput );
com.itextpdf.text.Image graph;
graph = com.itextpdf.text.Image.getInstance( byteOutput.toByteArray() );
моя задача была скопировать рисунок с холста, он будет копировать в WritableImage, чем получить изображение из WritableImage (для меня он справлялся с буфером обмена). Этот образ можно обрабатывать как угодно.
WritableImage wi = new WritableImage((int)gc.getCanvas().getWidth(),
(int)gc.getCanvas().getHeight());
gc.getCanvas().snapshot(null, wi); //Coping all that now in Canvas
//gc is GraphicContext object from Canvas, it has drawing functions
BufferedImage bi =SwingFXUtils.fromFXImage((Image)wi, null);
SwingFXUtils.toFXImage(bi, (WritableImage)image);