TIFFREADRGBATILE(3tiff)

πŸ’– TIFFREADRGBATILE πŸ’–

okay bestie, this is the TIFFReadRGBATile(3tiff) page from the LibTIFF manual, and we are about to understand it. no cap.


✨ NAME ✨

TIFFReadRGBATile β€” read and decode an image tile into a fixed-format raster πŸŽ€


🌸 SYNOPSIS 🌸

#include <tiffio.h>

int TIFFReadRGBATile(TIFF *tif, uint32_t x, uint32_t y, uint32_t *raster)

int TIFFReadRGBATileExt(TIFF *tif, uint32_t col, uint32_t row, uint32_t *raster, int stop_on_error)

πŸ¦‹ DESCRIPTION πŸ¦‹

so TIFFReadRGBATile() reads one single tile of a tile-based image into memory, and it drops the result into the RGBA raster you supplied. the way that works is: the raster is assumed to be an array of TileWidth Γ— TileLength 32-bit entries, where TileWidth is the width of a tile (TIFFTAG_TILEWIDTH) and TileLength is the height of a tile (TIFFTAG_TILELENGTH). iconic.

TIFFReadRGBATileExt() is the same vibe but it gives you the stop_on_error parameter. its behaviour is described over at TIFFReadRGBAImage. go look, i'll wait πŸ’…

the x and y values are the offsets from the top left corner to the top left corner of the tile you wanna read. and listen β€” they must be an exact multiple of the tile width and length. no rounding, no fudging, exact. periodt.

heads up: the raster is assumed to be organized such that the pixel at location (x, y) is raster [ y Γ— width + x ], with the raster origin in the lower-left hand corner of the tile. that's bottom to top organization, bestie. edge tiles which partly fall off the image will be filled out with appropriate zeroed areas. 🫢

raster pixels are 8-bit packed red, green, blue, alpha samples. the macros TIFFGetR, TIFFGetG, TIFFGetB, and TIFFGetA should be used to access individual samples. images without Associated Alpha matting information have a constant Alpha of 1.0 (255).

see the TIFFRGBAImage page for more details on how various image types are converted to RGBA values. iykyk ✨


πŸ’… NOTES πŸ’…

TIFFReadRGBATile() is literally just a wrapper around the more general TIFFRGBAImage facilities. its main advantage over the similar TIFFReadRGBAImage() function is that for large images, a single buffer capable of holding the whole image doesn't need to be allocated β€” only enough for one tile. πŸŽ€ and the TIFFReadRGBAStrip() function does a similar operation for stripped images. the range, honestly.

for general notes see TIFFRGBImage notes.


πŸ‘‘ RETURN VALUES πŸ‘‘

1 is returned if the image was successfully read and converted. otherwise, 0 is returned if an error was encountered. slay or fail, no in-between πŸ”₯


😭 DIAGNOSTICS 😭

all error messages are directed to the TIFFErrorExtR() routine.

  • "Sorry, can not handle %d-bit pictures" β€” the image had BitsPerSample other than 1, 2, 4, 8, or 16.
  • "Sorry, can not handle %d-channel images" β€” the image had SamplesPerPixel other than 1, 3, or 4.
  • Missing needed "PhotometricInterpretation" tag β€” the image did not have a tag that describes how to display the data.
  • No "PhotometricInterpretation" tag, assuming RGB β€” the image was missing a tag that describes how to display it, but because it has 3 or 4 samples/pixel, it is assumed to be RGB.
  • No "PhotometricInterpretation" tag, assuming min-is-black β€” the image was missing a tag that describes how to display it, but because it has 1 sample/pixel, it is assumed to be a grayscale or bilevel image.
  • "No space for photometric conversion table" β€” there was insufficient memory for a table used to convert image samples to 8-bit RGB.
  • Missing required "Colormap" tag β€” a Palette image did not have a required Colormap tag.
  • "No space for tile buffer" β€” there was insufficient memory to allocate an i/o buffer.
  • "No space for strip buffer" β€” there was insufficient memory to allocate an i/o buffer.
  • "Can not handle format" β€” the image has a format (combination of BitsPerSample, SamplesPerPixel, and PhotometricInterpretation) that TIFFReadRGBAImage() can not handle.
  • "No space for B&W mapping table" β€” there was insufficient memory to allocate a table used to map grayscale data to RGB.
  • "No space for Palette mapping table" β€” there was insufficient memory to allocate a table used to map data to 8-bit RGB.

🌈 SEE ALSO 🌈

  • TIFFOpen (3tiff)
  • TIFFRGBAImage (3tiff)
  • TIFFReadRGBAImage (3tiff)
  • TIFFReadRGBAStrip (3tiff)
  • libtiff (3tiff)

πŸ’œ AUTHOR πŸ’œ

LibTIFF contributors 🫢


1988-2025, LibTIFF contributors


and that's the whole page bestie!! this was LibTIFF version 4.7, dated Jun 27, 2026, and honestly? she ate. go read your tiles πŸ’–βœ¨πŸŽ€