A megoldás ez esetben egy olyan ASP.NET-es alkalmazás, mely közvetlenül egy képet szolgáltat és nem egy web oldalt. Ezt az alkalmazást később felhasználhatjuk tetszőleges HTML oldalakon, vagy más programokban is a következő módon: a html kódba amikor képet illesztünk, ott a kép forrásaként nem egy kép állományt adunk meg, hanem azt az alkalmazásunkat, mely a képet szolgáltatja.
<img src="http://localhost/RuntimePic/WebForm1.aspx">
A mellékelt _teszt.htm állományban erre látható példa.
Nézzük most miként is készül a képet szolgáltató alkalmazásunk.
Az biztos, hogy képre szükségünk lesz. Ezt előállíthatjuk úgy is, hogy betöltünk egy már meglévő képet és arra rárajzoljuk a még szükséges tartalmat, de azt is megtehetjük, hogy a teljes képet futási időben állítjuk elő. Ehhez biztos, hogy szükségünk lesz egy Bitmap osztályra. Ezt felhasználva létrehozunk egy Graphics osztályt a rajzolás elvégzéséhez.
private void Page_Load(object sender, System.EventArgs e)
{
Rectangle r = new Rectangle(0, 0, 486, 60);
Bitmap bitmap = new Bitmap(r.Width, r.Height);
Graphics g = Graphics.FromImage(bitmap);
Ettől kezdve tetszőleges grafikát készíthetünk a Bitmap-re.
g.FillRectangle(new SolidBrush(Color.White), r);
g.DrawString("S o f t w a r e O n l i n e", new Font("Verdana", 20, FontStyle.Bold), new SolidBrush(Color.Black), 50, 17, StringFormat.GenericDefault);
...
A grafika elkészülte után át kell állítanunk a válasz formátumot képre. Ehhez a Response osztály ContentType property-be az image/gif sztringet kell írnunk. Ebből fogja tudni a válaszunkat fogadó alkalmazás, hogy a válasz tartalma egy GIF típusú kép lesz.
Mivel most képet adunk vissza, így a Bitmap tartalmát a Response osztály OutputStream folyamába kell mentenünk a Save függvény segítségével.
Response.ContentType = "image/gif";
bitmap.Save(Response.OutputStream, ImageFormat.Gif);
}
Képet küldhetnénk JPG formátumba is, ekkor ContentType az image/jpeg értéket kell hogy kapja, valamint a mentéskor az ImageFormat-nál is a Jpeg értéket kell választanunk.