File: /var/www/ilya/data/www/korunka.ru/i/amcharts/flash/export.aspx.cs
using System;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
public partial class _export : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Form["width"] != null && Request.Form["width"] != String.Empty)
{
// image dimensions
int width = Int32.Parse((Request.Form["width"].IndexOf('.') != -1) ? Request.Form["width"].Substring(0, Request.Form["width"].IndexOf('.')) : Request.Form["width"]);
int height = Int32.Parse((Request.Form["height"].IndexOf('.') != -1) ? Request.Form["height"].Substring(0, Request.Form["height"].IndexOf('.')) : Request.Form["height"]);
// image
Bitmap result = new Bitmap(width, height);
// set pixel colors
for (int y = 0; y < height; y++)
{
// column counter for the row
int x = 0;
// get current row data
string[] row = Request.Form["r" + y].Split(new char[] { ',' });
// set pixels in the row
for (int c = 0; c < row.Length; c++)
{
// get pixel color and repeat count
string[] pixel = row[c].Split(new char[] { ':' });
Color current_color = ColorTranslator.FromHtml("#" + pixel[0]);
int repeat = pixel.Length > 1 ? Int32.Parse(pixel[1]) : 1;
// set pixel(s)
for (int l = 0; l < repeat; l++)
{
result.SetPixel(x, y, current_color);
x++;
}
}
}
// output image
// image type
Response.ContentType = "image/jpeg";
Response.AddHeader("Content-Disposition", "attachment; filename=\"amchart.jpg\"");
// find image encoder for selected type
ImageCodecInfo[] encoders;
ImageCodecInfo img_encoder = null;
encoders = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo codec in encoders)
if (codec.MimeType == Response.ContentType)
{
img_encoder = codec;
break;
}
// image parameters
EncoderParameter jpeg_quality = new EncoderParameter(Encoder.Quality, 100L); // for jpeg images only
EncoderParameters enc_params = new EncoderParameters(1);
enc_params.Param[0] = jpeg_quality;
result.Save(Response.OutputStream, img_encoder, enc_params);
}
else
{
// invalid post
Response.Write("Invalid post");
}
}
}