public AdobeJpegDirectory Extract(SequentialReader reader) { reader.IsMotorolaByteOrder = false; var directory = new AdobeJpegDirectory(); try { if (reader.GetString(Preamble.Length) != Preamble) { directory.AddError("Invalid Adobe JPEG data header."); return directory; } directory.Set(AdobeJpegDirectory.TagDctEncodeVersion, reader.GetUInt16()); directory.Set(AdobeJpegDirectory.TagApp14Flags0, reader.GetUInt16()); directory.Set(AdobeJpegDirectory.TagApp14Flags1, reader.GetUInt16()); directory.Set(AdobeJpegDirectory.TagColorTransform, reader.GetSByte()); } catch (IOException ex) { directory.AddError("IO exception processing data: " + ex.Message); } return directory; }
public DuckyDirectory Extract(SequentialReader reader) { var directory = new DuckyDirectory(); try { while (true) { var tag = reader.GetUInt16(); // End of Segment is marked with zero if (tag == 0) break; var length = reader.GetUInt16(); switch (tag) { case DuckyDirectory.TagQuality: { if (length != 4) { directory.AddError("Unexpected length for the quality tag"); return directory; } directory.Set(tag, reader.GetUInt32()); break; } case DuckyDirectory.TagComment: case DuckyDirectory.TagCopyright: { reader.Skip(4); directory.Set(tag, reader.GetString(length - 4, Encoding.BigEndianUnicode)); break; } default: { // Unexpected tag directory.Set(tag, reader.GetBytes(length)); break; } } } } catch (IOException e) { directory.AddError(e.Message); } return directory; }