Skip to content

cran/tinyimg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tinyimg

R-CMD-check

An R package for optimizing and compressing images using Rust libraries. Supports PNG optimization via exoquant (lossy palette reduction) and oxipng (lossless optimization), and JPEG re-encoding via mozjpeg.

Installation

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

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

Usage

Optimize PNG and JPEG images

library(tinyimg)

# Optimize all images in a directory (PNG and JPEG)
tinyimg("path/to/directory")

# Optimize specific files (mixed formats)
tinyimg(c("photo.jpg", "diagram.png"))

PNG optimization

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

JPEG optimization

# Create a test JPEG
tmp = tempfile(fileext = ".jpg")
jpeg(tmp, width = 400, height = 400)
plot(1:10)
dev.off()

# Optimize with default quality (75)
tinyjpg(tmp)

# Optimize to a new file at a lower quality
tinyjpg(tmp, paste0(tmp, "-q60.jpg"), quality = 60)

Optimization levels and quality

For PNG, 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

For JPEG, the quality parameter (0-100) controls the trade-off between quality and file size; higher quality means larger files and vice versa.

See the benchmark results (for png and jpeg) for detailed comparisons, and ?tinyimg 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

❗ This is a read-only mirror of the CRAN R package repository. tinyimg — Optimize and Compress Images. Homepage: https://github.com/yihui/tinyimg Report bugs for this package: https://github.com/yihui/tinyimg/issues

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors