Click here to Skip to main content
15,880,972 members
Articles / Web Development / ASP.NET
Article

Dynamically Write Text On An Image

Rate me:
Please Sign up or sign in to vote.
4.74/5 (36 votes)
17 Jun 20041 min read 311.1K   12.7K   73   29
If you have a pre-existing graphic and you want to write some text over it...

Introduction

This article shows you how to dynamically write text on a pre-existing image, with ASP.NET and C#.

In my example, I have a picture of my son and I write the words “That’s my boy!”. Also, to show that you can combine graphic drawing and text together, I then draw an oval shape around the word that I just put on the picture.

In order to make this sample work, you need the following references:

C#
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Drawing.Text;

Also, you might need to play around with where you want your text and oval to go. Remember that both the placement of the text and graphic oval are based on X and Y coordinates. So, if you have to move the text/oval up, then change the value of the Y parameter. If you need to move the text/oval horizontally, then change the value of the X parameter.

There are basically 6 steps for my sample:

  1. Load your image:
    C#
    //Load the Image to be written on.
    Bitmap bitMapImage = new 
       System.Drawing.Bitmap(Server.MapPath("dallen.jpg" )  );
    Graphics graphicImage = Graphics.FromImage( bitMapImage ); 
  2. Set the graphics to be smooth.
    C#
    //Smooth graphics is nice.
    graphicImage.SmoothingMode = SmoothingMode.AntiAlias;
  3. Write your text. Here is where you set your font. The X and Y coordinates are in the new point. (100 = X, 250 = Y).
    C#
    //Write your text.
    graphicImage.DrawString( "That's my boy!", 
       new Font("Arial", 12,FontStyle.Bold ), 
       SystemBrushes.WindowText, new Point( 100, 250 ) ); 
  4. Draw your oval around the text. Note: play around with the numbers to make the oval to the correct size that you want.
    C#
    //I am drawing a oval around my text.
    graphicImage.DrawArc(new Pen(Color.Red, 3), 90, 235, 150, 50, 0, 360); 
  5. Set the Content Type to jpg and then write your image to the response stream.
    C#
    //Set the content type
    Response.ContentType="image/jpeg"; 
    //Save the new image to the response output stream.
    bitMapImage.Save(Response.OutputStream, ImageFormat.Jpeg); 
  6. Clean up.
    C#
    //Clean house.
    graphicImage.Dispose();
    bitMapImage.Dispose();

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer DolphLarson.Com
United States United States
Dolph Larson is a Microsoft Certified Solution Developer (MCSD) for .Net, Microsoft Certified Application Developer (MCAD) and Microsoft Certified Database Administrator (MCDBA). He has over fourteen years of professional combined programming, database administration and information technology experience. He currently works as a senior developer for Omnicell and has worked as a senior web developer for eRealty.com. Dolph also managed the programming department for Health Help, Inc. and has seven years of managed health care experience and three years of energy experience.

Right now, I am developing Compact Framework applications for the PocketPC and Winodws Mobile. Go TO http://www.iPocketPC.net for FREE Pocket PC software!!!!!

Comments and Discussions

 
GeneralRe: Font Color Pin
Member 162415011-Mar-08 3:04
Member 162415011-Mar-08 3:04 
GeneralDispose() goes in a finally block... Pin
Jason Shaver22-Jun-05 4:22
Jason Shaver22-Jun-05 4:22 
GeneralRe: Dispose() goes in a finally block... Pin
Daniel Turini22-Jun-05 4:37
Daniel Turini22-Jun-05 4:37 
GeneralRe: Dispose() goes in a finally block... Pin
Dolph Larson22-Jun-05 9:12
sussDolph Larson22-Jun-05 9:12 
GeneralPrinting Pin
Jeff Rush7-Feb-05 12:27
Jeff Rush7-Feb-05 12:27 
GeneralThe same code(fantastic) but in a aspx page, without visual studio;) Pin
javieranton30-Jun-04 5:10
javieranton30-Jun-04 5:10 
GeneralRe: The same code(fantastic) but in a aspx page, without visual studio;) Pin
nsimeonov16-Dec-05 12:00
nsimeonov16-Dec-05 12:00 
Generalnice one! Pin
steven shingler23-Jun-04 0:49
steven shingler23-Jun-04 0:49 
That's a really useful bit of code - might well come in handy Smile | :)

Thanks a lot!

Steven
GeneralASP version Pin
Andy Krafft22-Jun-04 23:13
Andy Krafft22-Jun-04 23:13 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.