MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Getting an image with JLink

  • To: mathgroup at smc.vnet.net
  • Subject: [mg116776] Re: Getting an image with JLink
  • From: David Bailey <dave at removedbailey.co.uk>
  • Date: Sun, 27 Feb 2011 04:35:03 -0500 (EST)
  • References: <ik84a3$n2u$1@smc.vnet.net>

On 25/02/2011 11:37, Rebecca Miller-Webster wrote:
> Hi,
>
> I am writing a Java program to get an image (or byte array) from a
> Mathematica program.
>
> My Java code looks something like this:
>
> ml.evaluate("tmp = renderImageGenericLig[" + sampleFormId + ", noteText," +
> sizeX + "," + sizeY + ", margin," + dpi + "," + lineStep + "," + tabStep +
> "," + ligatureMatch + "," + maxLigHeightDiff + "," + mmSearch + "," +
> highToLowGap + "," + lowToHighGap + "," + wordBaselineVariance + "," +
> debugFlag + "]");
>
> ml.discardAnswer();
> byte[] res = ml.evaluateToImage("tmp", 0, 0);
>
> try {
>                  BufferedImage imag = ImageIO.read(new
> ByteArrayInputStream(res));
>                  //BufferedImage imag = ImageIO.read(new InputStream(res));
>                  if(imag != null) {
>                      ImageIO.write(imag, "jpg", new
> File("/Users/Rebecca/","test.jpg"));
>                  }else {
>                      System.out.println("image is null");
>                  }
>              } catch (IOException ex) {
>                  System.out.println("IOException occurred: " +
> ex.getMessage());
>              }
>
>
> The renderImageGenericLig function is returning:
>
> Return [ Graphics[Raster[ note1[[1]] ], AspectRatio ->  Automatic,
>     ImageSize ->  530 ] ];
>
>
> Note: I've also tried returning just Raster as well as Image[Graphics ...
>
>
> In debug mode, from a notebook, I can render the image using:
>
>     Print[ Graphics[Raster[ note1[[1]] ], AspectRatio ->  Automatic,
>     ImageSize ->  530 ]  ];
>
>
> However, when I check the saved file, it is just a white image with nothing
> in it.  When debugging the Java code, I see to be getting data in the byte
> array, but when I convert to image with Java, I just end up with 0s or 1s.
>
>
> I don't know Mathematica very well and I am having a hard time finding
> examples of JLink in Java connecting to Mathematica.  Any help would be
> appreciated.
>
>
> Thanks!
>
> Rebecca
>
Wow - that looks a lot of work. J/Link lets you do things a lot easier 
than that. Say you have a static class in your Java code called foo, 
that takes a string argument, you can call it with:

LoadJavaClass["something.something.MyClass"];
something`something`MyClass.foo["xxxxx.jpg"];

(No Mathlink code in sight)

Although it is possible to pass the image directly, it is better, I find 
to put the image in a file and pass the name of the file.

Alternatively, if your aim is to create a Java GUI, you might want to 
try my free Super Widget Package, available from my website.

David Bailey
http://www.dbaileyconsultancy.co.uk



  • Prev by Date: Re: outputting C code
  • Next by Date: Re: Delete elements from list..
  • Previous by thread: Getting an image with JLink
  • Next by thread: Exporting video of simulation