AWARE SYSTEMS
TIFF and LibTiff Mail List Archive

2004.12.22 23:42 "[Tiff] problems populating a large 3D array", by S Smith

I'm trying to populate a 256 x 256 x L array of unsigned shorts with pixel values from L 16-bit TIFFs.

 The following code works fine up to L=122, but fails

at higher values. The starred lines seem to be where the program sends an error: the error references a failed debug assertion in afxole.inl, line 166.

BTW- I'm working on a winXP machine with 2GB RAM and VS.NET

Thanks in advance for any help.... -s

CString fnPrefix,fnNum,fnSuffix,fn; fnPrefix.Format("c:\\foo\\foo"); fnSuffix.Format(".tif"); const int length = 450;

TIFF* tif;
tdata_t buf;
uint32 height, linesize;

DWORD numElements[] = { 256,256,length }; COleSafeArray chunk; chunk.Create(VT_UI2, 3, numElements); unsigned short *pchunk; chunk.AccessData((LPVOID*)&pchunk); chunk.AllocData(); for (int i=0;i < 256*256*length;i++) pchunk[i]=0;

for (int frame=0;frame<length;frame++) { fnNum.Format("%06d",frame); fn = fnPrefix + fnNum + fnSuffix; tif = TIFFOpen(fn, "r"); **TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &height);

**TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &height); linesize = TIFFScanlineSize(tif); buf = _TIFFmalloc(TIFFScanlineSize(tif)); for (int linenum = 0; linenum < height; linenum++) {

        TIFFReadScanline(tif, buf, linenum, 0);
        for (int col=0;col<linesize;col++) {
                pchunk[(frame*256*256)+
                        (linenum*256)+col]=
                ((unsigned short *) buf)[col];
        }
}
}
chunk.UnaccessData();

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com