Exemple #1
0
            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();
            }
Exemple #2
0
 public Tiff(string filename)
 {
     Head = new IFH(filename);
     Pics = new List <IFD>();
     Pics.Add(new IFD(Head));
 }