5

Mathematica から Java に画像を取得するために J/Link を使用しようとしています。次のように 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") だけを返すと、文字列 blue を持つ画像が保存されます。

renderImageGeneric で何か別のものを返す必要があると想定していますが、何がわかりません。

ありがとう!

4

2 に答える 2

2

関数からの戻り値を正しく取得できませんでした。しかし、私は方針を変えて Mathematica に画像をファイルに出力させました。Java がその場所を認識できるように、Mathematica 関数にパスを渡しました。最善の解決策ではありませんが、うまくいきます。

于 2011-02-28T19:36:34.330 に答える
0

あなたは次のようなことを試みましたか

     Return[ExportString[Graphics[Disk[], ImageSize -> 100], "PNG"]]
于 2011-02-25T18:44:43.313 に答える