Me gustaría poder crear una imagen PNG simple, digamos de un cuadrado rojo usando un servicio basado en C# web para generar la imagen, llamada desde un elemento HTML <img src="myws.ashx?x=100>
.Crear imagen PNG con C# HttpHandler webservice
algún ejemplo HTML:
<hmtl><body>
<img src="http://mysite.com/webservice/rectangle.ashx?size=100">
</body></html>
¿Hay alguien que puede improvisar una sencilla (de trabajo) C# clase sólo para ayudarme a empezar? Una vez apagado y listo estoy seguro de que puedo terminar esto para realmente hacer lo que quiero que haga.
- juego final es crear/ámbar/verde (GAR) marcadores de estado sencillos rojos incrustados para una página web basada en los datos que muestra las métricas de rendimiento, etc *
- me gustaría que utilice PNG como anticipo utilizando transparencia en el futuro *
- ASP.NET 2.0 C# solución por favor ... (no tengo una caja de producción 3.5 todavía)
tia
sOLUCIÓN
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;}
}
}
¿Puede hacer que un manejador de http devuelva una imagen? digamos una imagen de mapa de bits o un búfer de bytes [] a un método C# (código detrás del archivo) desde donde se llama? Lo siento si sueno stupipd pero soy nuevo en http manejadores – zack
@YP, ver la respuesta aceptada ?? De lo contrario, no entiendo lo que quieres decir y francamente, no sabría cómo hacerlo de todos modos. Mi C# es bleh! – Guy
@guy Gracias por publicar la solución, ¡me ayudó mucho! –