Um, this is the gist of my initial post. Using TIFFWriteDirectory sequentially just does not work, so I'm left with no way to create multipage TIFFs:
> creation fails with these lines logged: > >> krita.file: "TIFFLinkDirectory: Error fetching directory count" >> krita.file: "TIFFRewriteDirectory: Error fetching directory count" > > A breakpoint on the TIFF error writing routine shows that both are > issued the moment I call TIFFWriteDirectory for the second and further > layers. TIFFCreateDirectory, which I saw suggested in tif_overview.c, > does not have an effect here. I'm not sure if the documentation is mistaken or I'm doing something wrong, as most examples out there use SubIFD (and even those are few and far between). amyspark On 10/12/2022 08:29, [email protected] wrote: > Yes, TIFF files have two page dimensions. > > You can put directories one after the other with TIFFWriteDirectory() > and you'll get a simple multipage document, conceptually like a PDF. > This is the dimension you'll find most widely supported in things like > GIMP. > > Hanging off each top level "page" you can also have subifds. You need > extra API to read these and they are not so widely used. The biggest > application I've found is in OME-TIFF which stores each channel (so > RGB plus various fluorescence and confocal layers) as a separate > top-level mono image, then uses subifds to hold pyramid levels. > > Unless you really need subifds, I'd stick to just using > TIFFWriteDirectory(). Just call it at the end of each page, no need > for TIFFCreateDirectory(). > > On Sat, 10 Dec 2022 at 02:17, L. E. Segovia via Tiff > <[email protected]> wrote: >> >> Yes, I did this, but not even GIMP recognises such multi-page files. >> >> On a related matter, judging from >> https://linux.die.net/man/3/tiffsetdirectory, there should be a way to >> not need to tamper with TIFFTAG_SUBIFD, i.e. using TIFFReadDirectory >> sequentially. In fact, it was the approach we were using up to now. >> >> That brings me a few questions to mind: >> >> - Does anyone know if that's the intended use of TIFFReadDirectory? If >> so, wasn't the function intended to seek into the next directory on its own? >> - Alternatively, are we supposed to use TIFFSetSubdirectory before each >> TIFFReadDirectory? (getting the offsets with TIFFGetField) >> >> Best, >> >> amyspark >> >> On 09/12/2022 10:52, [email protected] wrote: >>> Hello amyspark, >>> >>> My understanding is that you set the magic TIFFTAG_SUBIFD tag on a >>> directory with an $n element array of offsets, all initialized to 0, >>> and then the next $n TIFF directories you write will appear as >>> subdirectories of this directory, with the offsets filled in for you. >>> >>> Or that's what I did here and it seems to work for me: >>> >>> https://github.com/libvips/libvips/blob/master/libvips/foreign/vips2tiff.c#L2127-L2141 >>> >>> John >>> >>> On Fri, 9 Dec 2022 at 12:26, <[email protected]> wrote: >>>> >>>> The page I followed when implementing TIFF subframe writing is: >>>> >>>> https://stackoverflow.com/questions/11959617/in-a-tiff-create-a-sub-ifd-with-thumbnail-libtiff >>>> >>>> HTH >>>> Paavo >>>> >>>> >>>> -----Original Message----- >>>> From: Tiff <[email protected]> On Behalf Of L. E. Segovia via >>>> Tiff >>>> Sent: reede, 9. detsember 2022 03:29 >>>> To: [email protected] >>>> Subject: [Tiff] How to write multi-file TIFFs >>>> >>>> Hi all, >>>> >>>> I'm writing to ask about how to create a TIFF with multiple sub-images. >>>> Our writing code at Krita is unable to create this kind of files, creation >>>> fails with these lines logged: >>>> >>>>> krita.file: "TIFFLinkDirectory: Error fetching directory count" >>>>> krita.file: "TIFFRewriteDirectory: Error fetching directory count" >>>> >>>> A breakpoint on the TIFF error writing routine shows that both are issued >>>> the moment I call TIFFWriteDirectory for the second and further layers. >>>> TIFFCreateDirectory, which I saw suggested in tif_overview.c, does not >>>> have an effect here. >>>> >>>> Does anyone know the correct incantations to create this kind of files? >>>> I'm running LibTiff 4.4.0 at present. >>>> >>>> Best, >>>> >>>> amyspark >>>> >>>> -- >>>> amyspark 🌸 https://www.amyspark.me >>>> _______________________________________________ >>>> Tiff mailing list >>>> [email protected] >>>> https://lists.osgeo.org/mailman/listinfo/tiff >>>> >>>> _______________________________________________ >>>> Tiff mailing list >>>> [email protected] >>>> https://lists.osgeo.org/mailman/listinfo/tiff >>> _______________________________________________ >>> Tiff mailing list >>> [email protected] >>> https://lists.osgeo.org/mailman/listinfo/tiff >> >> -- >> amyspark 🌸 https://www.amyspark.me >> _______________________________________________ >> Tiff mailing list >> [email protected] >> https://lists.osgeo.org/mailman/listinfo/tiff -- amyspark 🌸 https://www.amyspark.me _______________________________________________ Tiff mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/tiff
