You should use ExifLib for that. Unfourtunately it takes a bit more work since it's not 100% adapted to WP. 

1) Download the ExifLib ZIP, unzip it, unblock the DLL (right click --> Properties --> Unblock) and add a reference to it from your project. I've hosted the ZIP on my server in the meanwhile @ http://JustinAngel.net/Storage/ExifLib.zip

2) Next you'll have to create an entry function which is usable from windows phone. Here's the one I use: 

public class ExifReaderEx : ExifReader
{
    protected ExifReaderEx(Stream stream)
        : base(stream)
    {
    }

    public static JpegInfo ReadJpeg(Picture picture)
    {
        Stream FileStream = null;
        try
        {
            FileStream = picture.GetImage();
        }
        catch
        {
            return null;
        }

        DateTime now = DateTime.Now;
        ExifReaderEx reader = new ExifReaderEx(FileStream);
        reader.info.FileSize = (int)FileStream.Length;
        reader.info.FileName = string.Format("{0}.jpg", "fileName");
        reader.info.LoadTime = (TimeSpan)(DateTime.Now - now);
        return reader.info;
    }
}


3) Invoke the code by calling ExifReaderEx.ReadJpeg(myPicture). For example the following code snippet will return a list of Exif items with all metadata:

            var items = 
                new MediaLibrary().Pictures
                    .Select(picture =&gt; ExifReaderEx.ReadJpeg(picture))
                    .Where(exif =&gt; exif != null)
                    .ToList();  


Read Exif data from Image on WP
I am having such kind of problem. I am making a small photo editor, where you can select image, change brightness contrast of the image, draw text on the image. 
This is the Form.
 . 
I have this methods.

private void DrawText(string text, int x, int y)
    {
        RectangleF rectf = new RectangleF(x, y, 90, 50);
        Graphics g = Graphics.FromImage(this.pictureBox1.Image);
        g.SmoothingMode = SmoothingMode.AntiAlias;
        g.InterpolationMode = InterpolationMode.HighQualityBicubic;
        g.PixelOffsetMode = PixelOffsetMode.HighQuality;
        g.DrawString(text.ToString(), new Font("Tahoma", Convert.ToInt32(this.textBoxSize.Text.ToString())), Brushes.Black, rectf);
        g.Flush();
    }

private void SetBrightness(int brightness)
    {
        if (!object.ReferenceEquals(this.pictureBox1.Image, null))
        {
            Bitmap temp = (Bitmap)this.pictureBox1.Image;
            Bitmap bmap = (Bitmap)temp.Clone();
            if (brightness &lt; -255) brightness = -255;
            if (brightness &gt; 255) brightness = 255;
            Color c;
            for (int i = 0; i &lt; bmap.Width; i++)
            {
                for (int j = 0; j &lt; bmap.Height; j++)
                {
                    c = bmap.GetPixel(i, j);
                    int cR = c.R + brightness;
                    int cG = c.G + brightness;
                    int cB = c.B + brightness;

                    if (cR &lt; 0) cR = 1;
                    if (cR &gt; 255) cR = 255;

                    if (cG &lt; 0) cG = 1;
                    if (cG &gt; 255) cG = 255;

                    if (cB &lt; 0) cB = 1;
                    if (cB &gt; 255) cB = 255;

                    bmap.SetPixel(i, j,
        Color.FromArgb((byte)cR, (byte)cG, (byte)cB));
                }
            }
            this.pictureBox1.Image = (Bitmap)bmap.Clone();
        }
    }

public void SetContrast(double contrast)
    {
        if (!object.ReferenceEquals(this.pictureBox1.Image, null))
        {
            Bitmap temp = (Bitmap)this.pictureBox1.Image;
            Bitmap bmap = (Bitmap)temp.Clone();
            if (contrast &lt; -100) contrast = -100;
            if (contrast &gt; 100) contrast = 100;
            contrast = (100.0 + contrast) / 100.0;
            contrast *= contrast;
            Color c;
            for (int i = 0; i &lt; bmap.Width; i++)
            {
                for (int j = 0; j &lt; bmap.Height; j++)
                {
                    c = bmap.GetPixel(i, j);
                    double pR = c.R / 255.0;
                    pR -= 0.5;
                    pR *= contrast;
                    pR += 0.5;
                    pR *= 255;
                    if (pR &lt; 0) pR = 0;
                    if (pR &gt; 255) pR = 255;

                    double pG = c.G / 255.0;
                    pG -= 0.5;
                    pG *= contrast;
                    pG += 0.5;
                    pG *= 255;
                    if (pG &lt; 0) pG = 0;
                    if (pG &gt; 255) pG = 255;

                    double pB = c.B / 255.0;
                    pB -= 0.5;
                    pB *= contrast;
                    pB += 0.5;
                    pB *= 255;
                    if (pB &lt; 0) pB = 0;
                    if (pB &gt; 255) pB = 255;

                    bmap.SetPixel(i, j,
        Color.FromArgb((byte)pR, (byte)pG, (byte)pB));
                }
            }
            this.pictureBox1.Image = (Bitmap)bmap.Clone();
        }
    }


And on my button CLick I am just calling this methods to do the work. What is the problem when I Draw the text for second time, it is not deleting and drawing text again, but I need the text to be drawn at different location every time and not over the old text. Can you please suggest any solution to this ? Thanks
