Estoy intentando usar J/Link para obtener una imagen de Mathematica a Java. Soy capaz de imprimir la imagen en Mathematica como esto:Obteniendo una imagen de Mathematica en Java
Print[ Graphics[Raster[ img[[1]] ], AspectRatio->Automatic, ImageSize->530 ] ];
He intentado devolver los datos de la función de Mathematica de varias maneras: Código
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]] ];
Mi 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");
}
Al depurar, obtengo una gran matriz de bytes en res. La imagen se guarda, pero está en blanco (es decir, una imagen blanca).
Si devuelvo solo una cadena ("azul"), se guarda una imagen con la cadena azul.
Supongo que tengo que devolver algo diferente en renderImageGeneric, pero no puedo entender qué.
Gracias!
Eso tampoco funcionó. No estoy seguro de lo que está pasando, pero JLink simplemente no parece estar evaluando correctamente el retorno de una función. – rmw