tinify: Use the Tinify API to compress PNG and JPEG images

View source: R/image.R

tinifyR Documentation

Use the Tinify API to compress PNG and JPEG images


Compress PNG/JPEG images with api.tinify.com, and download the compressed images. These functions require R packages curl and jsonlite. tinify_dir() is a wrapper function of tinify() to compress images under a directory.


  quiet = FALSE,
  force = FALSE,
  key = getOption("xfun.tinify.key", Sys.getenv("R_XFUN_TINIFY_KEY")),
  history = getOption("xfun.tinify.history", Sys.getenv("R_XFUN_TINIFY_HISTORY"))

tinify_dir(dir = ".", ...)



A vector of input paths of images.


A vector of output paths or a function that takes input and returns a vector of output paths (e.g., output = identity means output = input). By default, if the history argument is not a provided, output is input with a suffix -min (e.g., when input = 'foo.png', output = 'foo-min.png'), otherwise output is the same as input, which means the original image files will be overwritten.


Whether to suppress detailed information about the compression, which is of the form input.png (10 Kb) ==> output.png (5 Kb, 50%); compression count: 42. The percentage after output.png stands for the compression ratio, and the compression count shows the number of compressions used for the current month.


Whether to compress an image again when it appears to have been compressed before. This argument only makes sense when the history argument is provided.


The Tinify API key. It can be set via either the global option xfun.tinify.key (you may set it in ‘~/.Rprofile’) or the environment variable R_XFUN_TINIFY_KEY (you may set it in ‘~/.Renviron’).


Path to a history file to record the MD5 checksum of compressed images. If the checksum of an expected output image exists in this file and force = FALSE, the compression will be skipped. This can help you avoid unnecessary API calls.


A directory under which all ‘.png’, ‘.jpeg’, and ‘.webp’ files are to be compressed.


Arguments passed to tinify().


You are recommended to set the API key in ‘.Rprofile’ or ‘.Renviron’. After that, the only required argument of this function is input. If the original images can be overwritten by the compressed images, you may either use output = identity, or set the value of the history argument in ‘.Rprofile’ or ‘.Renviron’.


The output file paths.


Tinify API: https://tinypng.com/developers.

See Also

The tinieR package (https://github.com/jmablog/tinieR/) is a more comprehensive implementation of the Tinify API, whereas xfun::tinify() has only implemented the feature of shrinking images.


f = xfun:::R_logo("jpg$")
xfun::tinify(f)  # remember to set the API key before trying this

xfun documentation built on Sept. 13, 2022, 1:06 a.m.