Optimize all the local files of a directory (or list of directories) using the reSmush.it API.
Usage
resmush_dir(
dir,
ext = "\\.(png|jpe?g|bmp|gif|tif)$",
suffix = "_resmush",
overwrite = FALSE,
progress = TRUE,
report = TRUE,
recursive = FALSE,
...
)Arguments
- dir
Character or vector of characters representing paths of local directories.
- ext
regexindicating the extensions of the files to be optimized. The default value would capture all the extensions admitted by the API.- suffix
Character, defaults to
"_resmush". By default, a new file with the suffix is created in the same directory (i.e., optimizedexample.pngwould beexample_resmush.png). Values"",NAandNULLwould be the same thanoverwrite = TRUE.- overwrite
Logical. Should the files in
dirbe overwritten? IfTRUEsuffixwould be ignored.- progress
Logical. Display a progress bar when needed.
- report
Logical. Display a summary report of the process in the console. See also Value.
- recursive
Logical. Should the
dirfile search recursive? See alsolist.files().- ...
Arguments passed on to
resmush_fileqltyOnly affects
jpgfiles. Integer between 0 and 100 indicating the optimization level. For optimal results use vales above 90.exif_preserveLogical. Should the Exif information (if any) deleted? Default is to remove it (i.e.
exif_preserve = FALSE).
Value
Writes on disk the optimized file if the API call is successful in the
directories specified in dir.
In all cases, a (invisible) data frame with a summary of the process is returned as well.
See also
reSmush.it API docs.
See resmush_clean_dir() to clean a directory of previous runs.
Other functions for optimizing:
resmush_file(),
resmush_url()
Examples
# \donttest{
# Get example dir and copy
example_dir <- system.file("extimg", package = "resmush")
temp_dir <- tempdir()
file.copy(example_dir, temp_dir, recursive = TRUE)
#> [1] TRUE
# Dest folder
dest_folder <- file.path(tempdir(), "extimg")
# Non-recursive
resmush_dir(dest_folder)
#> ℹ Resmushing 3 files
#> 🕐 Go! | ■■■■■■■■■■■□□□□□□□□□□□□□□□□□□□□ 33% [3ms] | ETA: 0s (1/3 files)
#> Error in httr2::req_perform(dwn_opt, path = outfile): HTTP 400 Bad Request.
#> 🕐 Go! | ■■■■■■■■■■■■■■■■■■■■■□□□□□□□□□□ 67% [2.1s] | ETA: 1s (2/3 files)
#>
resmush_clean_dir(dest_folder)
#> ℹ Would remove 2 files:
#> → C:\Users\RUNNER~1\AppData\Local\Temp\RtmpmsXe8h/extimg/example_resmush.jpg
#> → C:\Users\RUNNER~1\AppData\Local\Temp\RtmpmsXe8h/extimg/example_resmush.png
# Recursive
summary <- resmush_dir(dest_folder, recursive = TRUE)
#> ℹ Resmushing 5 files
#> Error in httr2::req_perform(dwn_opt, path = outfile): HTTP 400 Bad Request.
# Same info in the invisible df
summary[, -c(1, 2)]
#> Error in summary[, -c(1, 2)]: object of type 'closure' is not subsettable
# Display with png
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)
}
#> Error in summary$dest_img: object of type 'closure' is not subsettable
# Clean up example
unlink(dest_folder, force = TRUE, recursive = TRUE)
# }
