Créer image PNG avec C# HttpHandler webservice

Je voudrais être en mesure de créer une simple image PNG, dire d'un carré rouge à l'aide d'un c# service basé sur le web pour générer l'image, appelée à partir d'une <img src="myws.ashx?x=100> élément HTML.

un exemple de code HTML:

<hmtl><body>
     <img src="http://mysite.com/webservice/rectangle.ashx?size=100">
</body></html>

Est il y a quelqu'un qui peut bricoler un simple (de travail) de classe C# juste pour me faire? Une fois hors et va je suis sûr que je peux terminer ce hors de réellement faire ce que je veux faire.

  • Fin du jeu est de créer de simples Rouge/Orange/Vert (RAG) incorporé statut des repères pour un pilotés par les données de la page web qui affiche les métriques de performance etc*
  • Je voudrais utiliser le PNG est que je prévois l'utilisation de la transparence dans l'avenir*
  • ASP.NET 2.0 C# solution s'il vous plaît... (je n'ai pas de production de 3,5 boîte encore)

tia

SOLUTION

rectangle.html

<html>
<head></head>
<body>
    <img src="rectangle.ashx" height="100" width="200">
</body>
</html>

rectangle.ashx

<%@ WebHandler Language="C#" Class="ImageHandler" %>

rectangle.cs

using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Web;

public class ImageHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        int width = 600; //int.Parse(context.Request.QueryString["width"]);
        int height = 400; //int.Parse(context.Request.QueryString["height"]);

        Bitmap bitmap = new Bitmap(width,height);

        Graphics g = Graphics.FromImage( (Image) bitmap );
        g.FillRectangle( Brushes.Red, 0f, 0f, bitmap.Width, bitmap.Height );    //fill the entire bitmap with a red rectangle

        MemoryStream mem = new MemoryStream();
        bitmap.Save(mem,ImageFormat.Png);

        byte[] buffer = mem.ToArray();

        context.Response.ContentType = "image/png";
        context.Response.BinaryWrite(buffer);
        context.Response.Flush();
    }

    public bool IsReusable {
        get {return false;}
    }
}
pouvez-vous faire un gestionnaire http renvoie une image? disons une image bitmap ou un byte[] buffer à une méthode c# (fichier code-behind), d'où il est appelé? Je suis désolé si j'ai l'air stupipd mais je suis de nouveau à des gestionnaires http
voir la accepté de répondre?? Sinon, je ne comprends pas ce que tu veux dire et franchement, je ne sais pas comment le faire de toute façon. Mon c# est bleh!
Merci pour l'affichage de la solution m'a beaucoup aidé!

OriginalL'auteur Guy | 2009-05-20