| Title: | Optimize and Compress Image Files with 'reSmush.it' |
| Version: | 1.0.2 |
| Description: | Optimize and compress local and online image files with the 'reSmush.it' 'API' https://resmush.it/api/. Process individual files or entire directories. The 'API' is free for personal use, accepts files smaller than 5 'MB' and supports 'PNG', 'JPEG', 'GIF', 'BMP' and 'TIFF' files. |
| License: | MIT + file LICENSE |
| URL: | https://dieghernan.github.io/resmush/, https://github.com/dieghernan/resmush |
| BugReports: | https://github.com/dieghernan/resmush/issues |
| Depends: | R (≥ 4.1.0) |
| Imports: | cli, curl, httr2 (≥ 1.0.0), tools, utils |
| Suggests: | grid, knitr, png, quarto, testthat (≥ 3.1.7) |
| VignetteBuilder: | quarto |
| Config/Needs/website: | dieghernan/gitdevr, xfun, dplyr, tibble, devtools, remotes, pak |
| Config/roxygen2/markdown: | TRUE |
| Config/roxygen2/version: | 8.0.0 |
| Config/testthat/edition: | 3 |
| Config/testthat/parallel: | true |
| Encoding: | UTF-8 |
| X-schema.org-keywords: | r, compress-images, optimize-images, resmushit, api, r-package, cran, cran-r |
| NeedsCompilation: | no |
| Packaged: | 2026-07-02 07:36:51 UTC; diego |
| Author: | Diego Hernangómez |
| Maintainer: | Diego Hernangómez <diego.hernangomezherrero@gmail.com> |
| Repository: | CRAN |
| Date/Publication: | 2026-07-02 09:40:02 UTC |
resmush: Optimize and Compress Image Files with 'reSmush.it'
Description
Optimize and compress local and online image files with the 'reSmush.it' 'API' https://resmush.it/api/. Process individual files or entire directories. The 'API' is free for personal use, accepts files smaller than 5 'MB' and supports 'PNG', 'JPEG', 'GIF', 'BMP' and 'TIFF' files.
Author(s)
Maintainer: Diego Hernangómez diego.hernangomezherrero@gmail.com (ORCID) [copyright holder]
Authors:
Diego Hernangómez diego.hernangomezherrero@gmail.com (ORCID) [copyright holder]
See Also
-
resmush_file()optimizes local image files. -
resmush_dir()optimizes image files in directories. -
resmush_url()optimizes online image files. The package website provides articles and reference documentation.
The source code is available on GitHub.
-
Report bugs in the issue tracker.
Remove output files from directories
Description
Use with caution. Remove files that match suffix from one or more
directories. This is intended to clean output files created by
resmush_file() or resmush_dir().
Usage
resmush_clean_dir(dir, suffix = "_resmush", recursive = FALSE)
Arguments
dir |
A character vector of directory paths. See the |
suffix |
A character string containing the suffix pattern used to
identify files. The value is interpreted as a regular expression. The
default is |
recursive |
Logical. Should the file search recurse into directories? |
Value
An invisible() NULL. Messages list the files selected for removal.
See Also
resmush_file() and resmush_dir() create the suffixed output
files that this function removes.
Examples
# Create a temporary file with a suffix to remove.
png_file <- system.file("extimg/example.png", package = "resmush")
suffix <- "_would_be_removed"
tmp_png <- file.path(
tempdir(),
paste0("example", suffix, ".png")
)
file.exists(tmp_png)
file.copy(png_file, tmp_png, overwrite = TRUE)
file.exists(tmp_png)
# Run with the default suffix. This should not remove the file.
resmush_clean_dir(tempdir())
file.exists(tmp_png)
# Use the matching suffix to remove the file.
resmush_clean_dir(tempdir(), suffix = suffix)
file.exists(tmp_png)
Optimize image files in directories
Description
Optimize supported image files in one or more directories with the reSmush.it API. The API is free for personal use and accepts files smaller than 5 MB.
Usage
resmush_dir(
dir,
ext = "\\.(png|jpe?g|bmp|gif|tif)$",
suffix = "_resmush",
overwrite = FALSE,
progress = TRUE,
report = TRUE,
recursive = FALSE,
...
)
Arguments
dir |
A character vector of paths to local directories. |
ext |
A |
suffix |
A character string inserted before each output file extension.
The default is |
overwrite |
Logical. Should the input files be overwritten? If |
progress |
Logical. Should a progress bar be displayed? |
report |
Logical. Should a summary report be displayed in the console? |
recursive |
Logical. Should the file search within |
... |
Arguments passed on to
|
Value
An invisibly returned data frame with one row per result and columns
containing source and destination paths, formatted and raw file sizes,
compression ratios and status notes. Returns NULL if no result is
available. Successful API calls also write the optimized files to disk.
See Also
-
resmush_clean_dir()removes output files created by previous runs. The reSmush.it API documentation describes the external service.
Other image optimization functions:
resmush_file(),
resmush_url()
Examples
# Copy the example directory.
example_dir <- system.file("extimg", package = "resmush")
temp_dir <- tempdir()
file.copy(example_dir, temp_dir, recursive = TRUE)
# Create the destination folder path.
dest_folder <- file.path(tempdir(), "extimg")
# Optimize files non-recursively.
resmush_dir(dest_folder)
resmush_clean_dir(dest_folder)
# Optimize files recursively.
summary <- resmush_dir(dest_folder, recursive = TRUE)
# Inspect the returned optimization summary.
summary[, -c(1, 2)]
# Display the PNG output.
if (require("png", quietly = TRUE)) {
a_png <- grepl("png$", summary$dest_img)
my_png <- png::readPNG(summary[a_png, ]$dest_img[2])
grid::grid.raster(my_png)
}
# Clean up the example files.
unlink(dest_folder, force = TRUE, recursive = TRUE)
Optimize local image files
Description
Optimize one or more local image files with the reSmush.it API. The API is free for personal use and accepts files smaller than 5 MB.
Usage
resmush_file(
file,
suffix = "_resmush",
overwrite = FALSE,
progress = TRUE,
report = TRUE,
qlty = 92,
exif_preserve = FALSE
)
Arguments
file |
A character vector of paths to local image files. The API can optimize PNG, JPEG, GIF, BMP and TIFF files. |
suffix |
A character string inserted before each output file extension.
The default is |
overwrite |
Logical. Should the input files be overwritten? If |
progress |
Logical. Should a progress bar be displayed? |
report |
Logical. Should a summary report be displayed in the console? |
qlty |
An integer between |
exif_preserve |
Logical. Should
EXIF metadata be preserved? The
default is |
Value
An invisibly returned data frame with one row per result and columns
containing source and destination paths, formatted and raw file sizes,
compression ratios and status notes. Returns NULL if no result is
available. Successful API calls also write the optimized files to disk. If
report = TRUE, a summary is displayed in the console.
See Also
-
resmush_clean_dir()removes output files created by previous runs. The reSmush.it API documentation describes the external service.
Other image optimization functions:
resmush_dir(),
resmush_url()
Examples
png_file <- system.file("extimg/example.png", package = "resmush")
# Copy to a temporary file for this example.
tmp_png <- tempfile(fileext = ".png")
file.copy(png_file, tmp_png, overwrite = TRUE)
resmush_file(tmp_png)
# Optimize multiple files.
jpg_file <- system.file("extimg/example.jpg", package = "resmush")
tmp_jpg <- tempfile(fileext = ".jpg")
file.copy(jpg_file, tmp_jpg, overwrite = TRUE)
# Display a summary in the console.
summary <- resmush_file(c(tmp_png, tmp_jpg))
# Inspect the returned optimization summary.
summary
# Display the PNG output.
if (require("png", quietly = TRUE)) {
my_png <- png::readPNG(summary$dest_img[1])
grid::grid.raster(my_png)
}
# Adjust the JPEG quality level.
resmush_file(tmp_jpg)
resmush_file(tmp_jpg, qlty = 10)
Optimize online image files
Description
Optimize and download one or more online image files with the reSmush.it API. The API is free for personal use and accepts files smaller than 5 MB.
Usage
resmush_url(
url,
outfile = file.path(tempdir(), basename(url)),
overwrite = FALSE,
progress = TRUE,
report = TRUE,
qlty = 92,
exif_preserve = FALSE
)
Arguments
url |
A character vector of URLs pointing to hosted image files. The API can optimize PNG, JPEG, GIF, BMP and TIFF files. |
outfile |
A character vector of paths where optimized files are stored.
By default, files are created in |
overwrite |
Logical. Should existing files in |
progress |
Logical. Should a progress bar be displayed? |
report |
Logical. Should a summary report be displayed in the console? |
qlty |
An integer between |
exif_preserve |
Logical. Should
EXIF metadata be preserved? The
default is |
Value
An invisibly returned data frame with one row per result and columns
containing source and destination paths, formatted and raw file sizes,
compression ratios and status notes. Returns NULL if no result is
available. Successful API calls also write the optimized files to disk. If
outfile contains duplicate paths, resmush_url() makes them unique with
suffixes such as _01 and _02.
See Also
-
resmush_clean_dir()removes output files created by previous runs. The reSmush.it API documentation describes the external service.
Other image optimization functions:
resmush_dir(),
resmush_file()
Examples
# Define the base URL.
base_url <- "https://raw.githubusercontent.com/dieghernan/resmush/main/inst/"
png_url <- paste0(base_url, "/extimg/example.png")
resmush_url(png_url)
# Optimize multiple URLs.
jpg_url <- paste0(base_url, "/extimg/example.jpg")
summary <- resmush_url(c(png_url, jpg_url))
# Inspect the returned optimization summary.
summary
# Display the PNG output.
if (require("png", quietly = TRUE)) {
my_png <- png::readPNG(summary$dest_img[1])
grid::grid.raster(my_png)
}
# Adjust the JPEG quality level.
resmush_url(jpg_url)
resmush_url(jpg_url, qlty = 10)