{"id":20872371,"url":"https://github.com/romnn/film-borders","last_synced_at":"2025-05-12T13:33:41.056Z","repository":{"id":37527254,"uuid":"383198583","full_name":"romnn/film-borders","owner":"romnn","description":"add 35mm / 120mm film borders to your photos :)","archived":false,"fork":false,"pushed_at":"2024-10-13T10:18:48.000Z","size":36462,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-16T10:31:17.452Z","etag":null,"topics":["35mm","analog","borders","cli","film","film-borders","image","image-manipulation","kodak","photography","portra400","rust","wasm","webapp","webassembly"],"latest_commit_sha":null,"homepage":"https://romnn.github.io/film-borders/","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/romnn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2021-07-05T16:13:09.000Z","updated_at":"2025-01-31T15:19:56.000Z","dependencies_parsed_at":"2024-11-16T22:33:23.523Z","dependency_job_id":"9fc911d3-a1e1-44d5-9774-6ba1ab3508ad","html_url":"https://github.com/romnn/film-borders","commit_stats":{"total_commits":154,"total_committers":1,"mean_commits":154.0,"dds":0.0,"last_synced_commit":"e9fb901680c65206c415310aa16dfdd5068612fa"},"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romnn%2Ffilm-borders","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romnn%2Ffilm-borders/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romnn%2Ffilm-borders/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romnn%2Ffilm-borders/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/romnn","download_url":"https://codeload.github.com/romnn/film-borders/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253748286,"owners_count":21957900,"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":["35mm","analog","borders","cli","film","film-borders","image","image-manipulation","kodak","photography","portra400","rust","wasm","webapp","webassembly"],"created_at":"2024-11-18T06:18:50.330Z","updated_at":"2025-05-12T13:33:38.555Z","avatar_url":"https://github.com/romnn.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Film Borders in WASM\n\nIf you have a modern browser, you can use the live WASM web version [here](https://film-borders.romnn.com).\n\n#### Installation\n\nYou can use the [web application](https://film-borders.romnn.com) that uses WASM or the CLI tool for batch processing.\n\nTo install the CLI, run\n\n```bash\ncargo install filmborders --bin film-borders\n```\n\nFor local testing, you can also install the current version locally:\n\n```bash\ncargo install --bin film-borders --path .\n```\n\n#### Benchmarking\n\n```bash\nsudo apt install linux-tools-common linux-tools-generic linux-`tools-name -r`\ncargo install flamegraph\nsudo cargo flamegraph -o my_flamegraph.svg -- apply --image ./samples/sample1.jpg --output ./output/sample1.png --border 0 --scale 1.00\n```\n\n#### Usage\n\n```bash\nfilm-borders --image ~/Downloads/testscan.jpg --width 2000 --height 1500 --border 10 --rotate 90\n```\n\nFor a list of options, see\n\n```bash\nfilm-borders --help\n```\n\n#### Linting\n\n```bash\ncargo clippy --tests --benches --examples --all-features -- -Dclippy::all -Dclippy::pedantic\n```\n\n#### TODO\n\n- lint\n- add rendering text\n\n- consider: where should into be used, where can be passed by reference\n\n- add single simple benchmark\n- get out the benchmark data as json or so\n- make a performance tracker via github actions\n- add a full suite of integration tests that check against expected output\n\n  - should test: different file formats\n  - should test: all border fill modes\n  - should test: with single image and multiple images\n  - should test: different sets of border configurations\n\n- use impls where possible\n- inline everything\n- add more benchmarks\n- add documentation\n- add more tests\n- add examples\n- update the website\n- use generic image backend\n\n#### Done\n\n- error handling for lib and border\n- implement arithmetic errors for more types\n- make the errors more nuanced, e.g. from what operation they stem from\n- add backtraces to all error types\n- make debug statements console log when on wasm target\n- add builder for image such that path can be set more easily\n- crop sides should really only be used for the user right?\n- subimage rect could also directly return a mutable sub image using crop?\n- consider: where should image rect be used\n- make all ops checked\n- implement scale border mode (not sophisticated)\n- split the types into multiple files\n- crop to fit should return rect?\n- write a clamp trait\n- lint\n- remove the apply subcommand\n- make border optional\n- allow custom border images (cli, lib and web)\n- make nice ui components\n- custom background color\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromnn%2Ffilm-borders","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fromnn%2Ffilm-borders","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromnn%2Ffilm-borders/lists"}