public IFD(IFH h) { Head = h; var fs = new FileStream(h.File, FileMode.Open); fs.Seek(h.IFD, SeekOrigin.Begin); var ct = new byte[2]; fs.Read(ct, 0, 2); Count = Convert.ToInt32(h.getValue(ct, 3)); Des = new List <DE>(); for (var i = 0; i < Count; i++) { var de = new byte[12]; fs.Seek(10 + i * 12, SeekOrigin.Begin); fs.Read(de, 0, 12); Des.Add(new DE(de, fs, this)); } Width = Convert.ToUInt32(Des.FirstOrDefault(o => o.Tag == 256).Value); Height = Convert.ToUInt32(Des.FirstOrDefault(o => o.Tag == 257).Value); Pos = Convert.ToInt64(Des.FirstOrDefault(o => o.Tag == 273).Value); Stride = Convert.ToInt64(Des.FirstOrDefault(o => o.Tag == 279).Value) / Height; fs.Seek(10 + Count * 12, SeekOrigin.Begin); var nt = new byte[4]; fs.Read(nt, 0, 4); Next = BitConverter.ToInt32(nt, 0); fs.Close(); }
public Tiff(string filename) { Head = new IFH(filename); Pics = new List <IFD>(); Pics.Add(new IFD(Head)); }