public static Com.Drew.Metadata.Metadata ReadMetadata([NotNull] InputStream inputStream) { // TIFF processing requires random access, as directories can be scattered throughout the byte sequence. // InputStream does not support seeking backwards, so we wrap it with RandomAccessStreamReader, which // buffers data from the stream as we seek forward. Com.Drew.Metadata.Metadata metadata = new Com.Drew.Metadata.Metadata(); ExifTiffHandler handler = new ExifTiffHandler(metadata, false); new TiffReader().ProcessTiff(new RandomAccessStreamReader(inputStream), handler, 0); return(metadata); }
/// <exception cref="System.IO.IOException"/> /// <exception cref="TiffProcessingException"/> public static DirectoryList ReadMetadata(Stream stream) { // TIFF processing requires random access, as directories can be scattered throughout the byte sequence. // Stream does not support seeking backwards, so we wrap it with IndexedCapturingReader, which // buffers data from the stream as we seek forward. var directories = new List <Directory>(); var handler = new ExifTiffHandler(directories); TiffReader.ProcessTiff(new IndexedCapturingReader(stream), handler); return(directories); }
/// <exception cref="System.IO.IOException"/> /// <exception cref="TiffProcessingException"/> public static DirectoryList ReadMetadata(string filePath) { var directories = new List <Directory>(); using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.RandomAccess)) { var handler = new ExifTiffHandler(directories); TiffReader.ProcessTiff(new IndexedSeekingReader(stream), handler); } directories.Add(new FileMetadataReader().Read(filePath)); return(directories); }
public static Com.Drew.Metadata.Metadata ReadMetadata([NotNull] FilePath file) { Com.Drew.Metadata.Metadata metadata = new Com.Drew.Metadata.Metadata(); RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r"); try { ExifTiffHandler handler = new ExifTiffHandler(metadata, false); new TiffReader().ProcessTiff(new RandomAccessFileReader(randomAccessFile), handler, 0); } finally { randomAccessFile.Close(); } new FileMetadataReader().Read(file, metadata); return(metadata); }