【问题标题】:Getting a Mathematica image in Java在 Java 中获取 Mathematica 图像
【发布时间】:2011-02-25 18:35:42
【问题描述】:

我正在尝试使用 J/Link 将图像从 Mathematica 获取到 Java。我可以像这样在 Mathematica 中打印图像:

Print[ Graphics[Raster[ img[[1]] ], AspectRatio->Automatic, ImageSize->530 ]  ];

我尝试过以各种方式从 Mathematica 函数返回数据:

Return [ Image[Graphics[Raster[ img[[1]] ], AspectRatio->Automatic, ImageSize->530 ]] ];

Return [ Graphics[Raster[ img[[1]] ], AspectRatio->Automatic, ImageSize->530 ] ];

Return [ Raster[ note1[[1]] ] ];

Return [ note1[[1]] ];

我的 Java 代码:

ml.evaluate("tmp = renderImageGeneric[" + sampleId + ", noteText," + sizeX + "," + sizeY + ", margin," + dpi + "," + lineStep + "," + tabStep + "," + ligatureMatch + "," + maxLigHeightDiff + "," + mmSearch + "," + highToLowGap + "," + lowToHighGap + "," + wordBaselineVariance + "," + debugFlag + "]");

ml.discardAnswer();
byte[] res = ml.evaluateToImage("tmp", 0, 0);
ByteArrayInputStream strm = new ByteArrayInputStream(res);
BufferedImage imag = ImageIO.read(strm);
//BufferedImage imag = ImageIO.read(new InputStream(res));
if(imag != null) {
      ImageIO.write(imag, "png", new File("/Users/Rebecca/","test.png"));
}else {
      System.out.println("image is null");
}

调试时,我在 res 中得到一个大字节数组。图像确实已保存,但它是空白的(即白色图像)。

如果我只返回一个字符串(“blue”),则保存一个带有蓝色字符串的图像。

我假设我需要在 renderImageGeneric 中返回不同的东西,但我不知道是什么。

谢谢!

【问题讨论】:

    标签: java image-processing wolfram-mathematica jlink


    【解决方案1】:

    我无法正确地从函数中获得回报。但是,我改变了方向,让 Mathematica 将图像输出到文件中。我传递了 Mathematica 函数的路径,以便 Java 知道它在哪里。不是最好的解决方案,但可以解决问题。

    【讨论】:

      【解决方案2】:

      你有没有尝试过类似的东西

           Return[ExportString[Graphics[Disk[], ImageSize -> 100], "PNG"]]
      

      【讨论】:

      • 那也没用。我不确定发生了什么,但 JLink 似乎没有正确评估函数的返回。
      猜你喜欢
      • 1970-01-01
      • 2011-09-11
      • 2012-10-22
      • 1970-01-01
      • 2011-11-17
      • 2011-12-22
      • 2016-06-07
      • 2019-11-27
      • 2016-08-18
      相关资源
      最近更新 更多