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.
tinify(
input,
output,
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 = ".", ...)
The output file paths.
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
.
Tinify API: https://tinypng.com/developers.
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.
if (FALSE) { # interactive()
f = xfun:::R_logo("jpg$")
xfun::tinify(f) # remember to set the API key before trying this
}
Run the code above in your browser using DataLab