ijtiff 3.3.0
NEW FEATURES
-
read_tif()andread_tags()can read directly from an in-memory raw vector of TIFF bytes;write_tif(img, path = NULL)writes to memory and returns the TIFF file as a raw vector. - 12-bit grayscale TIFFs are now readable (values returned in 0..4095, big-endian packing assumed).
- Signed-integer TIFFs now read with correct negative values (previously warned and read as unsigned).
-
read_tif()gains aconvertargument.convert = "force"decodes any image via libtiff’s RGBA reader, converting exotic colorspaces (YCbCr, CMYK/separated, CIELab, …) to 8-bit RGB(A) — useful for images that previously read in a non-RGB colorspace or (for JPEG-YCbCr) not meaningfully at all.convert = "auto"(the default) preserves existing behaviour for every currently-readable image and only uses the RGBA reader as a fallback for images the direct decoder cannot parse at all.convert = "never"disables it. -
write_tif()can writePHOTOMETRIC_RGBimages viatags_to_write = list(photometric = "RGB"); the default remainsBlackIsZero. Supported TIFF metadata (includingPhotometricInterpretation) now round-trips through read→write automatically.
BEHAVIOUR CHANGES
- Because photometric now round-trips, an image read from a
WhiteIsZeroTIFF is re-written asWhiteIsZero(previouslyBlackIsZero). Unwritable source photometrics (Palette/CMYK/YCbCr/CIELab/…) are silently not written unless you convert the image.
BUG FIXES
- Fixed a stale check that caused the “Reading … image” message to always say “float” regardless of the true sample format.
-
read_tif()/read_tags()error messages for unsupported images now render their values correctly (previously ava_listmisuse garbled the numbers). - Fixed a memory-safety bug where reading a corrupt/truncated TIFF that errored mid-decode could leave a dangling handle and crash (segfault) on a subsequent read or at garbage collection. The TIFF handle’s state is now heap-owned and cleaned up by its finalizer, removing a latent double-close/use-after-free.
ijtiff 3.2.0
CRAN release: 2026-01-26
NEW FEATURES
-
write_tif()now uses atags_to_writeparameter that accepts a named list of TIFF tags, consolidating support for all writable tags (previously used individual parameters). - Support for writing
imagedescriptionTIFF tag (tag 270) for OME-TIFF metadata. - Automatic metadata preservation: TIFF tags are automatically extracted from image attributes (e.g., from
read_tif()) and included when writing, enabling round-trip editing without metadata loss. - Tag name normalization: tag names in
tags_to_writeare now case-insensitive and ignore hyphens/underscores. - Compression and bits-per-sample overrides:
tags_to_writecan now overridecompressionandbits_per_sampleparameters.
MINOR IMPROVEMENTS
- Replace
vapply()withpurrr::map_chr()in tag normalization for cleaner, more consistent code style. - Refactored argument checking logic for better organization.
ijtiff 3.1.2
BUG FIXES
Doc fix for write_tif(). See issue #23.
ijtiff 3.1.0
CRAN release: 2025-03-10
MINOR IMPROVEMENTS
-
display()now uses base R’sgraphicsandgrDevicesso the dependency on the (large)imagerpackage is removed.
BUG FIXES
- Fixed memory leaks in tag handling code by ensuring proper buffer cleanup.
- Added TIFF file validation to prevent memory leaks when handling invalid files.
- Improved error messages for invalid TIFF files.
- All tags now included in
print()method.
ijtiff 3.0.0
CRAN release: 2025-03-02
NEW FEATURES
- Support almost all tags that
libtiffdoes.- See the list at https://libtiff.gitlab.io/libtiff/functions/TIFFGetField.html.
- Willing to support others, just open an issue to make a feature request.
ijtiff 2.3.0
CRAN release: 2023-01-17
MINOR IMPROVEMENTS
- Use
rlang::abort()and its error message formatting. - Move away from
magrittr’s%<>%.
ijtiff 2.2.0
CRAN release: 2020-08-05
NEW FEATURES
- The package now works on 32-bit Windows (thanks to PR #12 from Jeroen Ooms).
BUG FIXES
- Fix tests by making use of
testthat::test_path().
ijtiff 2.0.0
CRAN release: 2019-06-10
BREAKING CHANGES
-
get_tiff_tags_reference()is nowtif_tags_reference(). -
count_imgs()is nowcount_frames().
NEW FEATURES
- It is now possible to read only certain frames of a TIFF image thanks to the
framesargument ofread_tif(). -
read_tif()andread_tags()now have the aliasestif_read()andtags_read()to comply with the rOpenSciobject_verb()style.
ijtiff 1.5.1
CRAN release: 2019-05-16
BUG FIXES
- Require necessary version of
glue. - Fix dimension-related bug in
as_EBImage(). - Require latest (less-buggy)
filesstrings.
ijtiff 1.5.0
CRAN release: 2018-10-31
BUG FIXES
-
write_txt_img()was using decimal points for integers (e.g. 3.000 instead of just 3).
ijtiff 1.4.1
CRAN release: 2018-09-24
ijtiff 1.3.0
NEW FEATURES
- Conversion functions
linescan_to_stack()andstack_to_linescan()useful for FCS data.
ijtiff 1.2.0
MINOR IMPROVEMENTS
- Improved the description of the package in DESCRIPTION, vignette and README.
- Added a hex sticker.
- Limited support for tiled images thanks to new author Kent Johnson.
-
write_tif()is now slightly (<10%) faster. -
write_tif()messages are now more informative.
ijtiff 1.1.0
CRAN release: 2018-04-19
NEW FEATURES
-
count_imgs()counts the number of images in a TIFF file without reading the images themselves. -
read_tags()reads the tags from TIFF images without reading the images themselves.
MINOR IMPROVEMENTS
- Now includes citation information.
- C code is more readable.
-
display()is more flexible, accepting 3 and 4-dimensional arrays, just displaying the first frame from the first channel.
BUG FIXES
- Fix windows
libtiffissues (thanks to Jeroen Ooms). - Found some ImageJ-written TIFFs that weren’t being read correctly and fixed that.
- Fix
protection stack overflowerror for TIFFs with many images.
