Skip to contents

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 "_resmush", so example.png becomes example_resmush.png. Values "", NA and NULL are equivalent to overwrite = TRUE.

overwrite

Logical. Should the input files be overwritten? If TRUE, suffix is ignored.

progress

Logical. Should a progress bar be displayed?

report

Logical. Should a summary report be displayed in the console?

qlty

An integer between 0 and 100 indicating the optimization level. This only affects JPEG files. For optimal results, use values above 90.

exif_preserve

Logical. Should EXIF metadata be preserved? The default is FALSE, which removes it.

Value

A data frame with source and destination paths, file sizes, compression ratios and status notes, returned invisibly. Successful API calls also write the optimized files to disk. If report = TRUE, a summary is displayed in the console.

See also

reSmush.it API documentation.

See resmush_clean_dir() to clean a directory of previous runs.

Other image optimization functions: resmush_dir(), resmush_url()

Examples


# \donttest{
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

resmush_file(tmp_png)
#> ══ resmush summary ═════════════════════════════════════════════════════════════
#>  Input: 1 file, 239.9 Kb total.
#>  Optimized 1 file: size is now 70.7 Kb (was 239.9 Kb). Saved 169.2 Kb (70.54%).
#> Saved result in directory /tmp/RtmpgyF4Or.

# 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)
#> [1] TRUE

# Display a summary in the console.
summary <- resmush_file(c(tmp_png, tmp_jpg))
#> 🕐  reSmushing | ■■■■■■■■■■■■■■■■□□□□□□□□□□□□□□□   50% [1ms] | ETA:  0s (1/2 fi…
#> 🕐  reSmushing | ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■  100% [821ms] | ETA:  0s (2/2 …
#> 
#> ══ resmush summary ═════════════════════════════════════════════════════════════
#>  Input: 2 files, 340.2 Kb total.
#>  Optimized 2 files: size is now 153.8 Kb (was 340.2 Kb). Saved 186.4 Kb (54.79%).
#> Saved results in directory /tmp/RtmpgyF4Or.

# Inspect the returned optimization summary.
summary
#>                                src_img
#> 1 /tmp/RtmpgyF4Or/file1ad3139c19ed.png
#> 2 /tmp/RtmpgyF4Or/file1ad354e975be.jpg
#>                                       dest_img src_size dest_size
#> 1 /tmp/RtmpgyF4Or/file1ad3139c19ed_resmush.png 239.9 Kb   70.7 Kb
#> 2 /tmp/RtmpgyF4Or/file1ad354e975be_resmush.jpg 100.4 Kb   83.2 Kb
#>   compress_ratio notes src_bytes dest_bytes
#> 1         70.54%    OK    245618      72356
#> 2         17.15%    OK    102796      85164

# Display the PNG output.
if (require("png", quietly = TRUE)) {
  my_png <- png::readPNG(summary$dest_img[1])
  grid::grid.raster(my_png)
}


# Adjust the optimization level for a JPEG file.
resmush_file(tmp_jpg)
#> ══ resmush summary ═════════════════════════════════════════════════════════════
#>  Input: 1 file, 100.4 Kb total.
#>  Optimized 1 file: size is now 83.2 Kb (was 100.4 Kb). Saved 17.2 Kb (17.15%).
#> Saved result in directory /tmp/RtmpgyF4Or.
resmush_file(tmp_jpg, qlty = 10)
#> ══ resmush summary ═════════════════════════════════════════════════════════════
#>  Input: 1 file, 100.4 Kb total.
#>  Optimized 1 file: size is now 6.4 Kb (was 100.4 Kb). Saved 94 Kb (93.61%).
#> Saved result in directory /tmp/RtmpgyF4Or.
# }