Получение изображения Mathematica на Java - PullRequest
5 голосов
/ 25 февраля 2011

Я пытаюсь использовать 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. Изображение действительно сохраняется, но оно пустое (то есть белое изображение).

Если я верну только строку («синюю»), изображение с синей строкой будет сохранено.

Я предполагаю, что мне нужно вернуть что-то по-другому в renderImageGeneric, но я не могу понять что.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011

Я не смог правильно получить возврат из функции. Однако я изменил курс и заставил Mathematica вывести изображение в файл. Я передал путь к функции Mathematica, чтобы Java знала, где она находится. Не лучшее решение, но оно делает свое дело.

0 голосов
/ 25 февраля 2011

Вы пробовали somenthing как

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