image - JavaFX 将 WritableImage 转换为 Image

标签 image javafx itext

我正在做一些应用程序,它可以制作LineChart的屏幕截图并将其保存到pdf文件中。所以我不知道将 WritableImage (JavaFX 2.2) 转换为 Image (iText lib) 的顺利方法。

我的临时解决方案是:

  1. 制作快照,然后
  2. 从快照中获取WritableImage
  3. 将图像写入 png 文件
  4. 打开图像并创建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);        

最佳答案

用途:

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() );

关于image - JavaFX 将 WritableImage 转换为 Image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20676858/

相关文章:

android - 如何在 Picasso 中使用磁盘缓存?

ios - 以编程方式将按钮放置在图像上

php - 如何使用 GD 在 2 个或更多椭圆之间制作渐变?

resize - 在保持宽高比的同时调整 JavaFX Windows 大小?

java - 尝试清除 JavaFX ObservableMap 时出现 ConcurrentException

java - 使用 iText 删除指定区域中出现的文本

android - 如何在 react-native android 应用程序中显示 GIF?

java - 背景图像在 SceneBuilder 中显示,但在 App 运行时不显示

java - iText - 在所有元素之上插入覆盖文本

java - 如何清除 .pdf 工件中的文本?