public int ScanlineSize()
{
int scanline;
if (m_dir.td_planarconfig == PlanarConfig.CONTIG)
{
if (m_dir.td_photometric == Photometric.YCBCR && !IsUpSampled())
{
FieldValue[] result = GetFieldDefaulted(TiffTag.YCBCRSUBSAMPLING);
short ycbcrsubsampling0 = result[0].ToShort();
if (ycbcrsubsampling0 == 0)
{
ErrorExt(this, m_clientdata, m_name, "Invalid YCbCr subsampling");
return 0;
}
scanline = roundUp(m_dir.td_imagewidth, ycbcrsubsampling0);
scanline = howMany8(multiply(scanline, m_dir.td_bitspersample, "ScanlineSize"));
return summarize(scanline, multiply(2, scanline / ycbcrsubsampling0, "VStripSize"), "VStripSize");
}
else
{
scanline = multiply(m_dir.td_imagewidth, m_dir.td_samplesperpixel, "ScanlineSize");
}
}
else
{
scanline = m_dir.td_imagewidth;
}
return howMany8(multiply(scanline, m_dir.td_bitspersample, "ScanlineSize"));
}
public TiffGrid(string FileName) { string fname = Path.GetFullPath(FileName); tiff = Tiff.Open(FileName, "r"); var val = tiff.GetField((TiffTag)33922)[1].ToDoubleArray(); XOrigin = val[3]; YOrigin = val[4]; //Upper basegrid assumes Lower val = tiff.GetField((TiffTag)33550)[1].ToDoubleArray(); GridSize = val[0]; GridSize = val[1]; NumberOfColumns = tiff.GetField(TiffTag.IMAGEWIDTH)[0].ToInt(); NumberOfRows = tiff.GetField(TiffTag.IMAGELENGTH)[0].ToInt(); scanline = new byte[tiff.ScanlineSize()]; bits = tiff.ScanlineSize() / NumberOfColumns; ScanLineCache = new Dictionary<int, byte[]>(); }