Skip to content

yihui/tinyimg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tinyimg

R-CMD-check

An R package for optimizing and compressing images using Rust libraries. Currently supports PNG optimization via exoquant (lossy palette reduction) and oxipng (lossless optimization).

Installation

You can install the development version of {tinyimg} from r-universe.dev:

install.packages("tinyimg", repos = "https://yihui.r-universe.dev")

Usage

Basic PNG optimization

library(tinyimg)

# Create a test PNG
tmp = tempfile()
png(tmp, width = 400, height = 400)
plot(1:10)
dev.off()

# Optimize with different levels (lossless)
tinypng(tmp, paste0(tmp, "-o1.png"), level = 1)
tinypng(tmp, paste0(tmp, "-o6.png"), level = 6)
# Lossy
tinypng(tmp, paste0(tmp, "-lossy.png"), lossy = 2.3)

Directory optimization

# Optimize all PNGs in a directory
tinypng("path/to/directory")

Optimization levels

The level parameter controls the optimization level (0-6):

  • 0: Fast optimization with minimal compression
  • 2: Default - good balance between speed and compression
  • 6: Maximum optimization - best compression but slower

See the benchmark results for detailed comparisons of optimization levels and ?tinypng for full documentation.

For Package Developers

When installing from GitHub via remotes::install_github("yihui/tinyimg"), the package will automatically create the vendor directory if Rust is installed on your system.

If you're developing and need to manually create the vendor directory:

# Run the update script to create vendor/ directory
./src/rust/update-vendor.sh

This creates the local vendor/ directory needed for development. Neither vendor/ nor vendor.tar.xz are tracked in git.

License

MIT License. See LICENSE file for details.

About

An R package for optimizing and compressing images

Resources

License

Stars

Watchers

Forks

Contributors