resmush is a R package that allow users to optimize and compress images using reSmush.it. reSmush.it is a free API that provides image optimization, and it has been implemented on WordPress, Drupal and many more.
Some of the features of reSmush.it are:
png
, jpg/jpeg
, gif
, bmp
, tiff
.Install resmush from CRAN with:
install.packages("resmush")
You can install the development version of resmush from GitHub with:
remotes::install_github("dieghernan/resmush")
Alternatively, you can install resmush using the r-universe:
# Install resmush in R: install.packages("resmush", repos = c( "https://dieghernan.r-universe.dev", "https://cloud.r-project.org" ))
Compressing an online jpg
image:
library(resmush) url <- paste0( "https://raw.githubusercontent.com/dieghernan/", "resmush/main/img/jpg_example_original.jpg" ) resmush_url(url, outfile = "man/figures/jpg_example_compress.jpg", overwrite = TRUE) #> ══ resmush summary ═════════════════════════════════════════════════════════════ #> ℹ Input: 1 url with size 178.7 Kb #> ✔ Success for 1 url: Size now is 45 Kb (was 178.7 Kb). Saved 133.7 Kb (74.82%). #> See result in directory 'man/figures'.
Original picture (top) 178.7 Kb and optimized picture (bottom) 45 Kb (Compression 74.8%). Click to enlarge.
The quality of the compression can be adjusted in the case of jpg
files using the parameter qlty
. However, it is recommended to keep this value above 90 to get a good image quality.
# Extreme case resmush_url(url, outfile = "man/figures/jpg_example_compress_low.jpg", overwrite = TRUE, qlty = 3 ) #> ══ resmush summary ═════════════════════════════════════════════════════════════ #> ℹ Input: 1 url with size 178.7 Kb #> ✔ Success for 1 url: Size now is 2.2 Kb (was 178.7 Kb). Saved 176.4 Kb (98.74%). #> See result in directory 'man/figures'.
Low quality image due to a high compression rate.
All the functions return invisibly a data set with a summary of the process. The next example shows how when compressing a local file.
png_file <- system.file("extimg/example.png", package = "resmush") # For the example, copy to a temporary file tmp_png <- tempfile(fileext = ".png") file.copy(png_file, tmp_png, overwrite = TRUE) #> [1] TRUE summary <- resmush_file(tmp_png, overwrite = TRUE) tibble::as_tibble(summary[, -c(1, 2)]) #> # A tibble: 1 × 6 #> src_size dest_size compress_ratio notes src_bytes dest_bytes #> <chr> <chr> <chr> <chr> <dbl> <dbl> #> 1 239.9 Kb 70.7 Kb 70.54% OK 245618 72356
There are other alternatives for optimizing images with R:
xfun::tinify()
is similar to resmush_file()
but uses TinyPNG. An API key is required.xfun::optipng()
compresses local files with OptiPNG (which needs to be installed locally).xfun::optipng()
with more options. Requires additional software to be installed locally.xfun::tinify()
Yes No Yes Yes 500 files/month (Free tier) xfun::optipng()
Yes Yes No No No tinieR No No Yes Yes 500 files/month (Free tier) optout No Yes No No No resmush Yes No Yes No Max size 5Mb
Table 1: R packages: Comparison of alternatives for optimizing images.
tool png jpg gif bmp tiff webp pdfxfun::tinify()
✅ ✅ ❌ ❌ ❌ ✅ ❌ xfun::optipng()
✅ ❌ ❌ ❌ ❌ ❌ ❌ tinieR ✅ ✅ ❌ ❌ ❌ ✅ ❌ optout ✅ ✅ ❌ ❌ ❌ ❌ ✅ resmush ✅ ✅ ✅ ✅ ✅ ❌ ❌
Table 2: R packages: Formats admitted.
Hernangómez D (2025). resmush: Optimize and Compress Image Files with reSmush.it. doi:10.32614/CRAN.package.resmush, https://dieghernan.github.io/resmush/.
A BibTeX entry for LaTeX users is
@Manual{R-resmush,
title = {{resmush}: Optimize and Compress Image Files with {reSmush.it}},
doi = {10.32614/CRAN.package.resmush},
author = {Diego Hernangómez},
year = {2025},
version = {0.2.1},
url = {https://dieghernan.github.io/resmush/},
abstract = {Compress local and online images using the reSmush.it API service <https://resmush.it/>.},
}
Xie, Yihui. 2024. xfun: Supporting Functions for Packages Maintained by Yihui Xie. https://github.com/yihui/xfun.
All contributions to this project are gratefully acknowledged using the allcontributors
package following the allcontributors specification. Contributions of any kind are welcome!
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4