11 unstable releases
Uses new Rust 2024
| 0.8.0 | Jan 4, 2026 |
|---|---|
| 0.7.4 | Oct 4, 2024 |
| 0.6.0 | Jan 28, 2023 |
| 0.5.1 | Aug 6, 2022 |
| 0.3.6-alpha.0 | Mar 20, 2021 |
#60 in Images
24,665 downloads per month
Used in 29 crates
(3 directly)
41KB
780 lines
Features
| Feature | |
|---|---|
.png, .jpg, .jpeg, or .bmp format supported |
✅ |
Compares different format (.png vs .jpg for example) |
✅ |
| Compares different dimensions | ✅ |
| Anti-aliasing support | ✅ |
| Blockout areas support | ✅ |
| Supports macOS, Linux and Windows | ✅ |
Demo
| expected[^1] | actual[^1] | diff |
|---|---|---|
Getting Started
Installation
via pre-built binaries
Download the binaries for your platform from release page.
via cargo
cargo install dify
via Node.js ecosystem
Please refer to dify-bin npm package, it is a node.js wrapper for dify executable file:
npm install -g dify-bin # or `yarn global add dify-bin`
dify --help
Usage
dify left.jpg right.jpg
Checkout diff.png if a.jpg and b.jpg are different.
For more details, see dify --help.
Docker
docker run -v $(pwd):/mnt/dify ghcr.io/jihchi/dify left.jpg right.jpg
Benchmarks
Test data comes from mtrKovalenko/odiff.
hyperfine \
--warmup 1 \
--ignore-failure \
--export-markdown bench-dify.md \
'dify tiger.jpg tiger-2.jpg -o tiger-diff.png' \
'dify water-4k.png water-4k-2.png -o water-diff.png' \
'dify www.cypress.io.png www.cypress.io-2.png -o www.cypress.io-diff.png'
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
dify tiger.jpg tiger-2.jpg -o tiger-diff.png |
40.2 ± 0.4 | 39.6 | 42.3 | 1.00 |
dify water-4k.png water-4k-2.png -o water-diff.png |
1754.9 ± 23.3 | 1716.2 | 1799.6 | 43.68 ± 0.74 |
dify www.cypress.io.png www.cypress.io-2.png -o www.cypress.io-diff.png |
1228.0 ± 17.6 | 1203.6 | 1251.7 | 30.56 ± 0.54 |
Ran on MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports), macOS Catalina 10.15.7.
Roadmap
See the open issues for a list of proposed features (and known issues).
Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
Distributed under the MIT License. See LICENSE for more information.
Acknowledgements
- This project is inspired by dmtrKovalenko/odiff and mapbox/pixelmatch.
- This project implements ideas from the following papers:
- Measuring perceived color difference using YIQ NTSC transmission color space in mobile applications (2010, Yuriy Kotsarenko, Fernando Ramos)
- Anti-aliased pixel and intensity slope detector (2009, Vytautas Vyšniauskas)
Contributors
Many thanks for your help!
The image of contributors is made with contrib.rocks.
[^1]: Images comes from mapbox/pixelmatch
Dependencies
~8–19MB
~222K SLoC