Mathematica Graphics output in an ASP.NET WebApplication II
- To: mathgroup at smc.vnet.net
- Subject: [mg54685] Mathematica Graphics output in an ASP.NET WebApplication II
- From: "Javier Chicote" <goraperas at hotmail.com>
- Date: Sun, 27 Feb 2005 01:29:09 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
I would like to place the Mathematica Graphics output in an ASP.NET
WebApplication using Wolfram.NETLink referente, like in the example of
C:\...\Mathematica\5.0\AddOns\NETLink\Examples\Part2\MathKernelApp.
First of all, I tried to use the mathKernel.Graphics property to get the
image from the Mathematica graphics output during the last call to
mathKernel.Compute(). The problem is that in WebForms I cannot use
System.Windows.Forms.PictureBox that I can use in Windows, so I need to
refer a URL for the System.Web.UI.WebControls.Image when I only have a
System.Drawing.Image object.
Then, I check out the possibilies proposed in Wolfram MathGroup:
How to give back to an image using "Net/Link" and "asp.net"?
http://forums.wolfram.com/mathgroup/archive/2004/Mar/msg00143.html
how to save a mathematica-made imagebox.image as jpg, gif, bmp in
c#/.netlink?
http://forums.wolfram.com/mathgroup/archive/2004/May/msg00087.html
Mathematica Graphics output in an ASP.NET WebApplication
http://forums.wolfram.com/mathgroup/archive/2005/Jan/msg00238.html
Now I have 2 WebForms, but I still haven't found the solution to my problem,
althought I can see the graphic in certain cases.
----------------------------------------------------------------------------
In WebForm1.aspx I define the image:
HTML:
<IMG id="Img1" style="Z-INDEX: 116; LEFT: 496px; POSITION: absolute; TOP:
16px" height="200" src="Graphics.aspx" width="200" runat="server"></form>
Graphics.aspx is the WebForm that I use as an image:
HTML:
<%@ Page language="c#" Codebehind="Graphics.aspx.cs" AutoEventWireup="false"
Inherits="MathKernelAppWeb.Graphics" EnableSessionState="False"
enableViewState="False" contentType="image/jpeg"%>
Code:
protected string input;
protected System.Drawing.Image image;
private void Page_Load(object sender, System.EventArgs e)
{
input = "Plot3D[Sin[x y], {x, -Pi, Pi}, {y, 0 ,10}]"; //1
image = WebForm1.mathKernel.Link.EvaluateToImage(input,200,200);//2
image.Save(Response.OutputStream, ImageFormat.Jpeg);
}
----------------------------------------------------------------------------
The previos code works, but I have two problems:
1) It is supposed that the application runs in WebForm1, so I need to pass
the input string from WebForm1 to Grapthics, and I don't know how to do
this.
2) I would like to use the mathKernel.Compute() method and the the
mathKernel.Graphics[0] property instead of
mathKernel.Link.EvaluateToImage(), it's supossed that they do the same task
but it doesn't work if I do this:
WebForm1.mathKernel.Compute(input);
image = WebForm1.mathKernel.Graphics[0];
or this:
Bitmap bmp = new Bitmap(WebForm1.mathKernel.Graphics[0]);
image = (System.Drawing.Image) bmp;
In the explanation that Todd Gayley gives in of the articles above says that
maybe it could be a bug in Mathematica. If so, I would really appreciate if
you could inform me if it's solved in Mathematica 5.1 or newer versions.
Thanks,
Javier Chicote