If there's any transformation of the EXIF orientation tag the new value should be returned in a different attribute other than "metadata.orientation". There should be a clear distinction between EXIF raw values and interpreted / transformed information. A user of the parser might want to interpret the EXIF values in a different way. "metadata.orientation" should just contain the EXIF value from 1 to 8. Any calculated matrix or transform is not metadata contained in the image. Another solution would be storing the raw values in an object metadata.exif = {
 orientation:
 cameraModelName:
 focalLength:
 exposureMode:
...
}