13

I have an image that is 240x320 (iphone camera image in portrait), and I need to programmatically (in C#) add white "bars" to the sides increasing the full image size to 320x320. I don't want to scale the image because that would mess up the aspect ratio.

I have found a lot of info about how to remove white bars with c#, but nothing about how to add them. I am at a loss. Does anyone have any input that might lead me the correct direction?

Thanks a bunch, Brett

Brett
  • 11,637
  • 34
  • 127
  • 213

4 Answers4

19
using (System.Drawing.Image src = System.Drawing.Image.FromFile("picture.jpg"))
{
       using (Bitmap bmp = new Bitmap(320, 320))
       {
                Graphics g = Graphics.FromImage(bmp);
                g.Clear(Color.White);
                g.DrawImageUnscaled(src, 60, 0, 240, 320);
                bmp.Save("file.jpg", ImageFormat.Jpeg);
       }
}

Remember to dispose the object after use ;)

DFTR
  • 861
  • 10
  • 30
munissor
  • 3,755
  • 22
  • 24
  • 5
    This is a good candidate for the using statement to handle the disposal. E.g. using (Bitmap bmp = new Bitmap(320, 320)) { //... } – Daniel Ballinger Mar 31 '10 at 20:43
  • @Daniel I wrote only the relevant code, but your comment is good. Notice that also the Graphics and the source image are good using candidates – munissor Apr 01 '10 at 08:52
4

Create a new empty white bitmap of the desired size and blit the smaller image onto it.

Matti Virkkunen
  • 63,558
  • 9
  • 127
  • 159
0

Basically create a new bitmap with the required dimension, clear it with the color you want and then draw the smaller bitmap so that it is centered vertically.

Lucero
  • 59,176
  • 9
  • 122
  • 152
0

Here's a great link where a more generalized approach is described for resizing images and adding white bars, either at the top or at the bottom (depending of image orientation)c# Image resizing to different size while preserving aspect ratio

Community
  • 1
  • 1
Pinte Dani
  • 1,989
  • 3
  • 28
  • 35