// TIFF processing requires random access, as directories can be scattered throughout the byte sequence.
// InputStream does not support seeking backwards, and so is not a viable option for TIFF processing.
// We use RandomAccessStreamReader, which buffers data from the stream as we seek forward.
Metadata metadata = new Metadata();
new ExifReader().extractTiff(new RandomAccessStreamReader(inputStream), metadata);
return metadata;
}