|0.0.1||May 13, 2021|
A CLI for capturing images on macOS 📷 📸 🖼️
This crate also doubles as a Rust library. 🦀
brew install smudge/smudge/imagesnap
Set up Rust/Cargo and install from crates.io by running:
cargo install imagesnap
Run the command without any arguments to output
snapshot.jpg, captured from the default camera:
$ imagesnap Capturing image from device "iSight"..................snapshot.jpg
The filename can be changed by specifying an argument. Only JPG files are currently supported:
$ imagesnap shot1.jpg Capturing image from device "iSight"..................shot1.jpg
-l flag to list all available image capture devices:
$ imagesnap -l iSight DV
-d flag to use a specific device:
$ imagesnap -d DV Capturing image from device "DV"..................snapshot.jpg
-w flag to specify a warmup period (default is 0.5), allowing the camera to perform light balancing and/or focus before taking a shot:
$ imagesnap -w 2.5 Capturing image from device "iSight"...........................snapshot.jpg
-q flag to silence the status and progress output.
Lastly, run the command with
--help to see usage instructions.
In addition to a CLI,
imagesnap can be pulled-in as a dependency for other Rust crates:
imagesnap = "0.0.1"
To snap an image with the default camera, use
let camera = Camera::default(); camera.snap("snapshot.jpg").await;
snap is an
If more than one camera is attached, use
Camera::new and specify a device:
let camera = Camera::new(Device::find("FaceTime"), None);
To discover all devices, use
An optional warmup period may also be specificied (in seconds):
let camera = Camera::new(Device::default(), 1.5);
If left unspecified, it will default to 0.5 seconds.
- Basic functionality working (snap image to file)
- Add additional opts like 'quiet' and 'warmup'
- Get device selection working
- Clean up code, work on generic lib interface
- Update README with library usage
- Support additional file types? (png, tif, etc?)
- Add Linux support (via
- Add Windows support (via
- Get STDOUT and pipe detection working (macOS/linux)
- Robert Harder for the original imagesnap CLI
- The maintainers of the Rust objc crate
- Carol Nichols and Steve Klabnik for the official book on Rust
- Check the issue tracker and consider creating a new issue.
- Fork the project and create a new branch for your contribution.
- Write, commit, and push your contribution to your branch.
- Make sure the project builds (
cargo build) and functionality still works as expected.
- Submit a pull request.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.