Using resmush

resmush is an R package for optimizing and compressing images with reSmush.it. reSmush.it is a free API for image optimization and is available through WordPress and many other tools.

reSmush.it includes:

Example

Compress an online jpg image with resmush_url():

library(resmush)

url <- "https://dieghernan.github.io/resmush/img/jpg_example_original.jpg"

resmush_url(url, outfile = "jpg_example_compress.jpg", overwrite = TRUE)
#> ══ resmush summary ═════════════════════════════════════════════════════════════
#> ℹ Input: 1 URL, total size 178.7 Kb.
#> ✔ Optimized 1 URL: Size is now 45 Kb (was 178.7 Kb). Saved 133.7 Kb (74.82%).
#> Saved result in directory '.'.
Original uncompressed JPEG image
(a)
Optimized JPEG image
(b)
Figure 1: Original image Figure 1 (a): 178.7 KB, optimized image Figure 1 (b): 45 KB (compression: 74.8%). Click to enlarge.

Use the qlty argument to adjust compression quality for jpg files. Keep this value above 90 to maintain good image quality.

# Use an extreme compression setting.
resmush_url(
  url,
  outfile = tempfile(fileext = ".jpg"),
  overwrite = TRUE,
  qlty = 3
)
#> ══ resmush summary ═════════════════════════════════════════════════════════════
#> ℹ Input: 1 URL, total size 178.7 Kb.
#> ✔ Optimized 1 URL: Size is now 2.2 Kb (was 178.7 Kb). Saved 176.4 Kb (98.74%).
#> Saved result in directory 'tempdir()'.

JPEG image with visible compression artifacts

Figure 2: Image with visible compression artifacts caused by high compression (qlty = 3), compared with Figure 1 (b).

All optimization functions invisibly return a data frame that summarizes the process. The following example shows this output when compressing a local file:

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)
#> [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

Alternatives

Several other R packages also provide image optimization tools:

Tool CRAN Additional software Online images API key required Limits
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)
tinyimg Yes Yes No No No
optout No Yes No No No
resmush Yes No Yes No Maximum size: 5 MB
Table 1: R packages: comparison of image optimization alternatives.
Tool png jpg gif bmp tiff webp pdf
xfun::tinify()
xfun::optipng()
tinieR
tinyimg
optout
resmush
Table 2: R packages: supported formats.

References

Xie, Yihui. 2024. xfun: Supporting Functions for Packages Maintained by Yihui Xie. https://github.com/yihui/xfun.
Xie, Yihui. 2026. tinyimg: Optimize and Compress Images. https://doi.org/10.32614/CRAN.package.tinyimg.