{"id":15723668,"url":"https://github.com/krshrimali/image-annotator-rust","last_synced_at":"2025-05-13T04:34:04.745Z","repository":{"id":65820161,"uuid":"582359976","full_name":"krshrimali/image-annotator-rust","owner":"krshrimali","description":"Cross Platform App to validate a folder of images (with pan and zoom features), mostly for dataset annotation purposes.","archived":false,"fork":false,"pushed_at":"2024-02-15T13:36:29.000Z","size":45420,"stargazers_count":6,"open_issues_count":7,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-01T06:26:51.773Z","etag":null,"topics":["iced","iced-rs","rust"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/watch?v=vryKN6d9qI8","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/krshrimali.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2022-12-26T15:20:28.000Z","updated_at":"2024-12-15T06:50:33.000Z","dependencies_parsed_at":"2024-02-15T14:46:58.056Z","dependency_job_id":null,"html_url":"https://github.com/krshrimali/image-annotator-rust","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krshrimali%2Fimage-annotator-rust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krshrimali%2Fimage-annotator-rust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krshrimali%2Fimage-annotator-rust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/krshrimali%2Fimage-annotator-rust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/krshrimali","download_url":"https://codeload.github.com/krshrimali/image-annotator-rust/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253877338,"owners_count":21977633,"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":["iced","iced-rs","rust"],"created_at":"2024-10-03T22:12:44.453Z","updated_at":"2025-05-13T04:33:59.731Z","avatar_url":"https://github.com/krshrimali.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Key Features\n\n**Note**: I'm actively working on this app's first release. Please hop on to the [issues page](https://github.com/krshrimali/image-annotator-rust-app/issues) if you would like to contribute.\n\n1. Select folder with images to mark annotated images.\n2. Zoom (like pinch zoom) and pan images in the view.\n3. Options available: Mark as Correct, Mark as Incorrect, Reset Selection.\n4. Export as a JSON file.\n5. The JSON file can retain previously annotated folders.\n6. See the info (track current image path, folder path, total files etc.) in the window itself.\n7. Invalid files are ignored, and a proper text is shown instead of the image viewer.\n8. Any sub-directories in the selected folder are ignored.\n9. Image file sizes are retained, and the app is scrollable + resizable.\n10. Binaries are available for Windows, OSX and Linux, [here](https://github.com/krshrimali/validate-image-annotations-rust/tree/main/binaries).\n11. Built 100% with Rust, GUI built using [Iced library](https://github.com/iced-rs/iced/)\n\n## Description and Demo\n\n**Theme Switching**\n\nThe app saves you some eye strain with dark and light theme switching option.\n\n![Screenshot from 2023-01-29 12-54-20](https://user-images.githubusercontent.com/19997320/215311668-bc935e22-fcc6-4882-bf7e-21d48b6173d0.png)\n\n**Welcome page - select your folder**\n\n\u003cimg width=\"1022\" alt=\"image\" src=\"https://user-images.githubusercontent.com/19997320/212478003-65eeba74-f894-4609-8fcc-b95ec88b8db7.png\"\u003e\n\n- Any sub-folders present in the selected folder will be ignored.\n- File validation is done while traversing through the folder, to save time.\n\n**Verify annotation**\n\n\u003cimg width=\"1022\" alt=\"image\" src=\"https://user-images.githubusercontent.com/19997320/212478037-3126f00d-571f-4b6e-ba23-bac27f7f27c0.png\"\u003e\n\n- Option to mark as correct/incorrect or reset selection.\n- Click `Export` to export the results to a JSON file. (`output.json` in the folder where you started the app from)\n- Mark as Incorrect will have an option to add comments (optional)\n\n**Invalid file**\n\n![invalid_file](https://user-images.githubusercontent.com/19997320/215312196-bdc46516-2dd8-4fb2-8b00-416e9fbd47ed.png)\n\n- In case a file is invalid, or the image couldn't be loaded, a message will appear and a user can see the file path in the info below to the text.\n\n**Add comments (optional)**\n\n![output_annotation](https://user-images.githubusercontent.com/19997320/215312198-0a089cc0-1a18-4727-b433-a9ad0a9b91c3.jpeg)\n\n## Output\n\nA sample output is given [here](https://github.com/krshrimali/image-annotator-rust-app/blob/main/output.json)\n\n```json\n{\n  \"image_to_properties_map\": {\n    \"/home/krshrimali/Documents/Projects/rust/image-annotator-rust-app/sample_folder\": [\n      {\n        \"index\": 0,\n        \"image_path\": \"/home/krshrimali/Documents/Projects/rust/image-annotator-rust-app/sample_folder/invalid_file.txt\",\n        \"annotation\": null,\n        \"comments\": null,\n        \"last_updated\": \"2023-02-05 12:53:28.343688759 +05:30\"\n      },\n      {\n        \"index\": 1,\n        \"image_path\": \"/home/krshrimali/Documents/Projects/rust/image-annotator-rust-app/sample_folder/sample.webp\",\n        \"annotation\": null,\n        \"comments\": null,\n        \"last_updated\": \"2023-02-05 12:53:28.343921942 +05:30\"\n      },\n      {\n        \"index\": 2,\n        \"image_path\": \"/home/krshrimali/Documents/Projects/rust/image-annotator-rust-app/sample_folder/nature-3082832__480.jpg\",\n        \"annotation\": null,\n        \"comments\": null,\n        \"last_updated\": \"2023-02-05 12:53:28.343935682 +05:30\"\n      }\n    ]\n  }\n}\n```\n\n## Build from source\n\nIf you are on Linux, following libraries are required:\n\n1. Rust toolchain, see: [this](https://doc.rust-lang.org/cargo/getting-started/installation.html) for instructions.\n2. `cmake`, `pkg-config`, `fontconfig`.\n3. [OpenSSL 3.0](https://openssl.org/)\n4. `libgtk-3-dev` (GTK 3.0 dev libraries)\n\nOnce done, follow the instructions below:\n\n```shell\n# Build porject\ncargo build\n# Build binary for release\ncargo build --release\n# Run the app\ncargo run\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrshrimali%2Fimage-annotator-rust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkrshrimali%2Fimage-annotator-rust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkrshrimali%2Fimage-annotator-rust/lists"}