{"id":15598321,"url":"https://github.com/jihchi/dify","last_synced_at":"2025-04-04T05:01:57.540Z","repository":{"id":47745669,"uuid":"313013294","full_name":"jihchi/dify","owner":"jihchi","description":"A fast, pixel-by-pixel image comparison tool developed in Rust","archived":false,"fork":false,"pushed_at":"2024-10-05T16:39:18.000Z","size":24231,"stargazers_count":78,"open_issues_count":4,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-28T04:01:45.166Z","etag":null,"topics":["diff","dify","image-comparison","snapshot","visual"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jihchi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-15T11:11:28.000Z","updated_at":"2025-03-27T15:05:47.000Z","dependencies_parsed_at":"2024-12-21T09:06:01.885Z","dependency_job_id":null,"html_url":"https://github.com/jihchi/dify","commit_stats":{"total_commits":181,"total_committers":3,"mean_commits":"60.333333333333336","dds":0.1270718232044199,"last_synced_commit":"0767ca9eddc8061f1d7e586bc359f0a92079dc66"},"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jihchi%2Fdify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jihchi%2Fdify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jihchi%2Fdify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jihchi%2Fdify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jihchi","download_url":"https://codeload.github.com/jihchi/dify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247117980,"owners_count":20886479,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["diff","dify","image-comparison","snapshot","visual"],"created_at":"2024-10-03T01:36:54.702Z","updated_at":"2025-04-04T05:01:57.503Z","avatar_url":"https://github.com/jihchi.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/jihchi/dify\"\u003e\n    \u003cimg src=\"./assets/logo.png\" alt=\"Dify Logo\" /\u003e\u003c/a\u003e\n  \u003ch1\u003eDify\u003c/h1\u003e\n    \u003cp\u003e\n      \u003cb\u003eA fast pixel-by-pixel image comparison tool in Rust\u003c/b\u003e\n    \u003c/p\u003e\n\u003c/div\u003e\n\n[![Workflows - CI][workflows-ci-shield]][workflows-ci-url]\n[![crates.io version][crates-io-shield-version]][crates-io-url]\n[![crates.io license][crates-io-shield-license]][crates-io-url]\n[![crates.io downloads][crates-io-shield-downloads]][crates-io-url]\n[![docs.rs][docs-rs]][docs-rs-url]\n\n## Features\n\n| Feature                                                  |     |\n| -------------------------------------------------------- | --- |\n| `.png`, `.jpg`, `.jpeg`, or `.bmp` format supported      | ✅  |\n| Compares different format (`.png` vs `.jpg` for example) | ✅  |\n| Compares different dimensions                            | ✅  |\n| Anti-aliasing support                                    | ✅  |\n| Blockout areas support                                   | ✅  |\n| Supports macOS, Linux and Windows                        | ✅  |\n\n## Demo\n\n| expected[^1]                 | actual[^1]                 | diff                        |\n| ---------------------------- | -------------------------- | --------------------------- |\n| ![expected](./assets/4a.png) | ![actual](./assets/4b.png) | ![diff](./assets/4diff.png) |\n\n## Getting Started\n\n### Installation\n\n#### via pre-built binaries\n\nDownload the binaries for your platform from [release](https://github.com/jihchi/dify/releases) page.\n\n#### via [cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html)\n\n```sh\ncargo install dify\n```\n\n#### via Node.js ecosystem\n\nPlease refer to [`dify-bin`](https://github.com/jihchi/dify-bin) npm package, it is a node.js wrapper for dify executable file:\n\n```sh\nnpm install -g dify-bin # or `yarn global add dify-bin`\ndify --help\n```\n\n## Usage\n\n```sh\ndify left.jpg right.jpg\n```\n\nCheckout `diff.png` if `a.jpg` and `b.jpg` are different.\n\nFor more details, see `dify --help`.\n\n### Docker\n\n```sh\ndocker run -v $(pwd):/mnt/dify ghcr.io/jihchi/dify left.jpg right.jpg\n```\n\n## Benchmarks\n\nTest data comes from [mtrKovalenko/odiff](https://github.com/dmtrKovalenko/odiff/tree/main/images).\n\n```sh\nhyperfine \\\n  --warmup 1 \\\n  --ignore-failure \\\n  --export-markdown bench-dify.md \\\n  'dify tiger.jpg tiger-2.jpg -o tiger-diff.png' \\\n  'dify water-4k.png water-4k-2.png -o water-diff.png' \\\n  'dify www.cypress.io.png www.cypress.io-2.png -o www.cypress.io-diff.png'\n```\n\n| Command                                                                   |     Mean [ms] | Min [ms] | Max [ms] |     Relative |\n| :------------------------------------------------------------------------ | ------------: | -------: | -------: | -----------: |\n| `dify tiger.jpg tiger-2.jpg -o tiger-diff.png`                            |    40.2 ± 0.4 |     39.6 |     42.3 |         1.00 |\n| `dify water-4k.png water-4k-2.png -o water-diff.png`                      | 1754.9 ± 23.3 |   1716.2 |   1799.6 | 43.68 ± 0.74 |\n| `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 |\n\nRan on MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports), macOS Catalina 10.15.7.\n\n## Roadmap\n\nSee the [open issues](https://github.com/jihchi/dify/issues) for a list of proposed features (and known issues).\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## License\n\nDistributed under the MIT License. See [`LICENSE`](./LICENSE.md) for more information.\n\n\u003c!-- ACKNOWLEDGEMENTS --\u003e\n\n## Acknowledgements\n\n- This project is inspired by [dmtrKovalenko/odiff](https://github.com/dmtrKovalenko/odiff) and [mapbox/pixelmatch](https://github.com/mapbox/pixelmatch).\n- This project implements ideas from the following papers:\n  - [Measuring perceived color difference using YIQ NTSC transmission color space in mobile applications](http://www.progmat.uaem.mx:8080/artVol2Num2/Articulo3Vol2Num2.pdf) (2010, Yuriy Kotsarenko, Fernando Ramos)\n  - [Anti-aliased pixel and intensity slope detector](https://www.researchgate.net/publication/234126755_Anti-aliased_Pixel_and_Intensity_Slope_Detector) (2009, Vytautas Vyšniauskas)\n\n## Contributors\n\nMany thanks for your help!\n\n\u003ca href=\"https://github.com/jihchi/dify/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contributors-img.web.app/image?repo=jihchi/dify\" /\u003e\n\u003c/a\u003e\n\nThe image of contributors is made with [contrib.rocks](https://contrib.rocks).\n\n[workflows-ci-shield]: https://github.com/jihchi/dify/workflows/CI/badge.svg\n[workflows-ci-url]: https://github.com/jihchi/dify/actions?query=workflow%3ACI\n[crates-io-shield-version]: https://img.shields.io/crates/v/dify\n[crates-io-shield-downloads]: https://img.shields.io/crates/d/dify\n[crates-io-shield-license]: https://img.shields.io/crates/l/dify\n[docs-rs]: https://img.shields.io/docsrs/dify\n[crates-io-url]: https://crates.io/crates/dify\n[docs-rs-url]: https://docs.rs/dify\n\n[^1]: Images comes from [mapbox/pixelmatch](https://github.com/mapbox/pixelmatch/tree/master/test/fixtures)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjihchi%2Fdify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjihchi%2Fdify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjihchi%2Fdify/lists"}