Okt
28
2009

Returnera png-bild via URL med Asp.net C#


För att returnera en bild från en url måste först och främst ändra applikationens Content-Type till image.

Response.Clear();
Response.ContentType = ”image/png”;

För returnerna en png-bild behöver man spara bilden till en minnesström som sedan skrivs över till webbläsarens outputström. Används ingen minnesström får man felmeddelandet A generic error occurred in GDI+.

// Sparar bilden till minnesströmmen som sedan sparar bilden till utströmmen
using (MemoryStream stream = new MemoryStream()) {
button.Save(stream, ImageFormat.Png);
stream.WriteTo(Response.OutputStream);
}

Detta behöver inte göras när man hanterar gif eller jpeg-bilder. Då det räcker att spara bilden enligt följande:

// Sparar bilden till utströmmen
button.Save(Response.OutputStream, ImageFormat.Gif);

En enkel asp.net -applikation som returnerar en bloggknapp kan se ut så här:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.IO;
using System.Drawing;
using System.Web.Security;
using System.Drawing.Imaging;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Bitmap button = new Bitmap(80, 15);
Graphics g = Graphics.FromImage(button);

String text = ”MerTeknik.se”;
Font font = new Font(”Courier”, 7F, FontStyle.Regular);
SolidBrush wb = new SolidBrush(Color.White);
SolidBrush bb = new SolidBrush(Color.Black);

g.FillRectangle(bb, 0, 0, 80, 15);
g.FillRectangle(wb, 1, 1, 78, 13);
g.FillRectangle(bb, 2, 2, 76, 11);

g.DrawString(text, font, wb, 7F, 1F);

Response.Clear();
Response.ContentType = ”image/png”;

using (MemoryStream stream = new MemoryStream()) {
button.Save(stream, ImageFormat.Png);
stream.WriteTo(Response.OutputStream);
}
}
}

Resultat

Applikationen returnerar en bloggknapp från en vanlig .aspx -url:
bloggknapp

1 Kommentar + Lämna en kommentar

  • Sånt här är häftigt, måste lära mig hur man gör sånt här i php också. :)

Lämna en kommentar

Relaterat

Övrigt

  • Internet bloggar
  • Internet