OK Paul, as it's you you're not required to grovel (much). Here's a function that returns a correctly oriented image from a digital camera JPEG file:

vb.net Code:
  1. Private Function OrientedImageFromFile(ByVal photoFileName As String) As Image
  2.    Dim img As Image = Image.FromFile(photoFileName) 'get the image
  3.    Dim pi As Imaging.PropertyItem = Array.Find(img.PropertyItems, _
  4.         Function(T As Imaging.PropertyItem) T.Id = &H112) '&H112 = PropertyTagOrientation
  5.    Select Case pi.Value(0) 'value is array of Int16
  6.        Case 3 : img.RotateFlip(RotateFlipType.Rotate180FlipNone) 'upside-down
  7.        Case 6 : img.RotateFlip(RotateFlipType.Rotate90FlipNone) 'rotated right
  8.        Case 8 : img.RotateFlip(RotateFlipType.Rotate270FlipNone) 'rotated left
  9.    End Select
  10.    Return img
  11. End Function

BB