| AWARE [SYSTEMS] | Imaging expertise for the Delphi developer | |||||||
![]() |
TIFF and LibTiff Mailing List Archive | |||||||
LibTiff Mailing List
TIFF and LibTiff Mailing List Archive Contact
The TIFF Mailing List Homepage |
Thread2006.02.07 11:48 "Re: Mega newbie question", by Joris Van DammeDermot Paikkos wrote:
> > TIFFGetField(tiff, 33424, &count, &data);
> > printf("Tag %d: %d, count %d0, 33424, *(uint32 *)data, count);
> > TIFFGetField(tiff, 36867, &count, &data);
> > printf("Tag %d: %s, count %d0, 36867, (char *)data, count);
>
> Is there a missing " mark here?
Yes, indeed.
> int hasPSfield;
> unsigned long imageOffset, result;
> uint16 count;
> void *data;
>
> TIFF* tif = TIFFOpen("test.tif", "r");
> if (tif == NULL) {
> printf("Failed to open file\n");
> exit(8);
> }
> TIFFGetField(tif,TIFFTAG_PHOTOSHOP &hasPSfield);
>
> if (hasPSfield < 1) {
> printf("No PhotoShop tag found\n");
> exit(8);
> }
> TIFFGetField(tif, hasPSfield, &count, &data);
> printf("Tag %d: %d, count %d\n", hasPSfield, *(uint32 *)data,
> count);
No, don't use TIFFGetField twice. Do it like this:
TIFF* tif = TIFFOpen("test.tif", "r");
if (tif == NULL) ...
if (TIFFGetField(tif,TIFFTAG_PHOTOSHOP,&count,&data)==0)
{
printf("No PhotoShop tag found\n");
exit(8);
}
/* value of Photoshop tag is count bytes long, and its value is loaded
into the memory pointed to by data */
> TIFFReadDirectory: Warning, test.tif: wrong data type 1 for
> "XMLPacket"; tag ignored.
> TIFFReadDirectory: Warning, test.tif: unknown field with tag 34665
> (0x8769) encountered.
Ignore above warnings.
BTW, I just noticed, the situation with the uint16 count is corrected
for the Photoshop tag. Declare count as uint32 instead.
I still think the general case should be uint32, instead of uint16,
though, but this should not bother you.
Joris Van Damme
info@awaresystems.be
http://www.awaresystems.be/
Download your free TIFF tag viewer for windows here:
http://www.awaresystems.be/imaging/tiff/astifftagviewer.html
|
|||||||