{"id":20190235,"url":"https://github.com/imazen/imageflow-node","last_synced_at":"2025-10-14T20:33:00.448Z","repository":{"id":37888247,"uuid":"259974157","full_name":"imazen/imageflow-node","owner":"imazen","description":"An Image manipulation Library for Nodejs. Based on https://github.com/imazen/imageflow","archived":false,"fork":false,"pushed_at":"2023-01-20T22:40:28.000Z","size":2561,"stargazers_count":94,"open_issues_count":18,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-28T01:26:28.563Z","etag":null,"topics":["image-processing","imageflow","linux","macos","napi","nodejs","rust","server","windows"],"latest_commit_sha":null,"homepage":"https://imazen.github.io/imageflow-node","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imazen.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}},"created_at":"2020-04-29T16:04:33.000Z","updated_at":"2025-08-09T23:31:07.000Z","dependencies_parsed_at":"2023-02-12T06:15:58.089Z","dependency_job_id":null,"html_url":"https://github.com/imazen/imageflow-node","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/imazen/imageflow-node","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imazen%2Fimageflow-node","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imazen%2Fimageflow-node/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imazen%2Fimageflow-node/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imazen%2Fimageflow-node/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imazen","download_url":"https://codeload.github.com/imazen/imageflow-node/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imazen%2Fimageflow-node/sbom","scorecard":{"id":485045,"data":{"date":"2025-08-11","repo":{"name":"github.com/imazen/imageflow-node","commit":"669bafc4ee15abf6ed6647f7fceadae01ebec619"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.3,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/23 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/linux.yml:1","Warn: no topLevel permission defined: .github/workflows/macos.yml:1","Warn: no topLevel permission defined: .github/workflows/npm-publish.yml:1","Warn: no topLevel permission defined: .github/workflows/npm.yml:1","Warn: no topLevel permission defined: .github/workflows/pages.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/spelling.yml:1","Warn: no topLevel permission defined: .github/workflows/windows.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/linux.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/macos.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/macos.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/macos.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/macos.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/macos.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/npm-publish.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/npm-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/npm-publish.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/npm-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/npm-publish.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/npm-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/npm-publish.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/npm-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/npm-publish.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/npm-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/npm-publish.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/npm-publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/npm.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/npm.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/npm.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/npm.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/npm.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/npm.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/npm.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/npm.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pages.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/pages.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pages.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/pages.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pages.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/pages.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/pages.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/pages.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/spelling.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/spelling.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/spelling.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/spelling.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/windows.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/windows.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/windows.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/windows.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:33: update your workflow using https://app.stepsecurity.io/secureworkflow/imazen/imageflow-node/windows.yml/main?enable=pin","Warn: chocoCommand not pinned by hash: .github/workflows/release.yml:42","Info:   0 out of  34 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   1 out of   1 npmCommand dependencies pinned","Info:   0 out of   1 chocoCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU Affero General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact 0.0.1-rc17 not signed: https://api.github.com/repos/imazen/imageflow-node/releases/41605156","Warn: release artifact 0.0.1-rc16 not signed: https://api.github.com/repos/imazen/imageflow-node/releases/39992630","Warn: release artifact 0.0.1-rc15 not signed: https://api.github.com/repos/imazen/imageflow-node/releases/35279649","Warn: release artifact 0.0.1-rc14 not signed: https://api.github.com/repos/imazen/imageflow-node/releases/34278715","Warn: release artifact 0.0.1-rc13 not signed: https://api.github.com/repos/imazen/imageflow-node/releases/34269398","Warn: release artifact 0.0.1-rc17 does not have provenance: https://api.github.com/repos/imazen/imageflow-node/releases/41605156","Warn: release artifact 0.0.1-rc16 does not have provenance: https://api.github.com/repos/imazen/imageflow-node/releases/39992630","Warn: release artifact 0.0.1-rc15 does not have provenance: https://api.github.com/repos/imazen/imageflow-node/releases/35279649","Warn: release artifact 0.0.1-rc14 does not have provenance: https://api.github.com/repos/imazen/imageflow-node/releases/34278715","Warn: release artifact 0.0.1-rc13 does not have provenance: https://api.github.com/repos/imazen/imageflow-node/releases/34269398"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 7 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"78 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: RUSTSEC-2021-0139","Warn: Project is vulnerable to: RUSTSEC-2021-0145 / GHSA-g98v-hv3f-hcfr","Warn: Project is vulnerable to: RUSTSEC-2024-0375","Warn: Project is vulnerable to: RUSTSEC-2022-0078 / GHSA-f85w-wvc7-crwc","Warn: Project is vulnerable to: RUSTSEC-2020-0159","Warn: Project is vulnerable to: RUSTSEC-2021-0064","Warn: Project is vulnerable to: RUSTSEC-2021-0093 / GHSA-pqqp-xmhj-wgcw","Warn: Project is vulnerable to: RUSTSEC-2022-0041 / GHSA-qc84-gqf4-9926","Warn: Project is vulnerable to: RUSTSEC-2023-0034 / GHSA-f8vr-r385-rh5r","Warn: Project is vulnerable to: RUSTSEC-2024-0003 / GHSA-8r5v-vm4m-4g25","Warn: Project is vulnerable to: RUSTSEC-2024-0332 / GHSA-q6cp-qfwq-4gcv","Warn: Project is vulnerable to: RUSTSEC-2021-0020 / GHSA-6hfq-h8hq-87mf","Warn: Project is vulnerable to: RUSTSEC-2021-0079 / GHSA-5h46-h7hh-c6x9","Warn: Project is vulnerable to: RUSTSEC-2021-0078 / GHSA-f3pg-qwvg-p99c","Warn: Project is vulnerable to: RUSTSEC-2022-0022 / GHSA-f67m-9j94-qv9j","Warn: Project is vulnerable to: RUSTSEC-2024-0421 / GHSA-h97m-ww89-6jmq","Warn: Project is vulnerable to: RUSTSEC-2023-0061 / GHSA-j7hp-h8jx-5ppr","Warn: Project is vulnerable to: RUSTSEC-2020-0144","Warn: Project is vulnerable to: RUSTSEC-2023-0045 / GHSA-wfg4-322g-9vqv","Warn: Project is vulnerable to: RUSTSEC-2020-0080","Warn: Project is vulnerable to: RUSTSEC-2020-0078 / RUSTSEC-2020-0079 / GHSA-458v-4hrf-g3m4 / GHSA-c79c-gwph-gqfm","Warn: Project is vulnerable to: RUSTSEC-2020-0016","Warn: Project is vulnerable to: RUSTSEC-2023-0022 / GHSA-3gxf-9r58-2ghg","Warn: Project is vulnerable to: RUSTSEC-2023-0024 / GHSA-6hcf-g6gr-hhcr","Warn: Project is vulnerable to: RUSTSEC-2023-0023 / GHSA-9qwg-crg9-m2vc","Warn: Project is vulnerable to: RUSTSEC-2023-0044 / GHSA-xcf7-rvmh-g6q4","Warn: Project is vulnerable to: RUSTSEC-2023-0072 / GHSA-xphf-cx8h-7q9g","Warn: Project is vulnerable to: GHSA-q445-7m23-qrmw","Warn: Project is vulnerable to: RUSTSEC-2024-0357","Warn: Project is vulnerable to: RUSTSEC-2025-0004 / GHSA-rpmj-rpgj-qmpm","Warn: Project is vulnerable to: RUSTSEC-2022-0040 / GHSA-9qxh-258v-666c","Warn: Project is vulnerable to: RUSTSEC-2022-0013 / GHSA-m5pq-gvj9-9vr8","Warn: Project is vulnerable to: RUSTSEC-2023-0018 / GHSA-mc8h-8q98-g5hr","Warn: Project is vulnerable to: RUSTSEC-2022-0004 / GHSA-2226-4v3c-cff8","Warn: Project is vulnerable to: RUSTSEC-2025-0025","Warn: Project is vulnerable to: RUSTSEC-2024-0006 / GHSA-r7qv-8r2h-pg27","Warn: Project is vulnerable to: RUSTSEC-2021-0003 / GHSA-43w2-9j62-hq99","Warn: Project is vulnerable to: RUSTSEC-2020-0056","Warn: Project is vulnerable to: RUSTSEC-2022-0006 / GHSA-9hpw-r23r-xgm5","Warn: Project is vulnerable to: RUSTSEC-2020-0071 / GHSA-wcg3-cvx6-7396","Warn: Project is vulnerable to: RUSTSEC-2021-0124 / GHSA-fg7r-2g4j-5cgr","Warn: Project is vulnerable to: RUSTSEC-2023-0005 / GHSA-4q83-7cq4-p6wg","Warn: Project is vulnerable to: GHSA-rr8g-9fpq-6wmg","Warn: Project is vulnerable to: RUSTSEC-2025-0023","Warn: Project is vulnerable to: GHSA-968p-4wvh-cqc8","Warn: Project is vulnerable to: GHSA-67hx-6x53-jw92","Warn: Project is vulnerable to: GHSA-93q8-gq69-wqmw","Warn: Project is vulnerable to: GHSA-cph5-m8f7-6c5x","Warn: Project is vulnerable to: GHSA-wf5p-g6vw-rhxx","Warn: Project is vulnerable to: GHSA-jr5f-v2jv-69x6","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-w573-4hg7-7wgq","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-74fj-2j2h-c42q","Warn: Project is vulnerable to: GHSA-pw2r-vq6v-hr8c","Warn: Project is vulnerable to: GHSA-jchw-25xp-jwwc","Warn: Project is vulnerable to: GHSA-cxjh-pqwp-8mfp","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-9c47-m6qq-7p4h","Warn: Project is vulnerable to: GHSA-5v2h-r2cx-5xgj","Warn: Project is vulnerable to: GHSA-rrrm-qjm4-v8hf","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-hj48-42vr-x3v9","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-c2qf-rxjj-qqgw","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj","Warn: Project is vulnerable to: GHSA-jgrx-mgxx-jf9v","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-j8xg-fqg3-53r7","Warn: Project is vulnerable to: GHSA-6fc8-4gx4-v693","Warn: Project is vulnerable to: GHSA-3h5v-q93c-6h6q"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-19T17:33:32.126Z","repository_id":37888247,"created_at":"2025-08-19T17:33:32.127Z","updated_at":"2025-08-19T17:33:32.127Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279020905,"owners_count":26086948,"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","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["image-processing","imageflow","linux","macos","napi","nodejs","rust","server","windows"],"created_at":"2024-11-14T03:41:48.801Z","updated_at":"2025-10-14T20:33:00.430Z","avatar_url":"https://github.com/imazen.png","language":"TypeScript","readme":"# Node bindings for [Imageflow](https://github.com/imazen/imageflow)\n\n[![Macos](https://github.com/imazen/imageflow-node/workflows/Test%20Macos/badge.svg)](https://github.com/imazen/imageflow-node/actions?query=workflow%3A%22Test+Macos%22) [![Linux](https://github.com/imazen/imageflow-node/workflows/Test%20Linux/badge.svg)](https://github.com/imazen/imageflow-node/actions?query=workflow%3A%22Test+Linux%22) [![Windows](https://github.com/imazen/imageflow-node/workflows/Test%20Windows/badge.svg)](https://github.com/imazen/imageflow-node/actions?query=workflow%3A%22Test+Windows%22)\n\nQuickly scale or modify images and optimize them for the web.\n\nIf the AGPLv3 does not work for you, you can get a [commercial license](https://imageresizing.net/pricing) on a sliding scale. If you have more than 1 server doing image processing your savings should cover the cost.\n\n[API docs are here](https://imazen.github.io/imageflow-node/).\n\n## Installation\n\n```bash\nnpm install @imazen/imageflow\n```\n\n## Usage\n\n```js\nconst {\n    MozJPEG,\n    Steps,\n    FromURL,\n    FromFile,\n    FromStream,\n    FromBuffer,\n} = require('@imazen/imageflow')\nconst fs = require('fs')\n\nlet step = new Steps(new FromURL('https://jpeg.org/images/jpeg2000-home.jpg'))\n    .constrainWithin(500, 500)\n    .branch((step) =\u003e\n        step\n            .constrainWithin(400, 400)\n            .branch((step) =\u003e\n                step\n                    .constrainWithin(200, 200)\n                    .rotate90()\n                    .colorFilterGrayscaleFlat()\n                    .encode(new FromFile('./branch_2.jpg'), new MozJPEG(80))\n            )\n            .copyRectangle(\n                (canvas) =\u003e\n                    canvas.decode(\n                        new FromStream(fs.createReadStream('./test.jpg'))\n                    ),\n                { x: 0, y: 0, w: 100, h: 100 },\n                10,\n                10\n            )\n            .encode(new FromFile('./branch.jpg'), new MozJPEG(80))\n    )\n    .constrainWithin(100, 100)\n    .rotate180()\nstep.encode(new FromBuffer(null, 'key'), new MozJPEG(80))\n    .execute()\n    .then(console.log)\n    .catch(console.log)\n```\n\n### Examples\n\n1. Reading a file from disk. `FromFile` provide an easy method for reading and writing images to disk.\n\n```js\nconst { MozJPEG, Steps, FromFile } = require('@imazen/imageflow')\n\nconst output = await new Step(new FromFile('path/to/file'))\n    .rotate180()\n    .encode(new FromFile('./path/to/output/file'))\n    .execute()\n```\n\n2. Reading from a stream. `FromStream` can read and write to a stream.\n\n```js\nconst { MozJPEG, Steps, FromStream } = require('@imazen/imageflow')\n\nconst output = await new Step(new FromStream(req))\n    .constrainWithin(400, 400)\n    .encode(new FromStream(res))\n    .execute()\nres.end()\n```\n\n3. Reading from a url. `FromURL` can make a GET request to download and POST request to upload the image.\n\n```js\nconst { MozJPEG, Steps, FromURL } = require('@imazen/imageflow')\n\nconst output = await new Step(new FromURL('url to image'))\n    .colorFilterGrayscaleFlat()\n    .encode(new FromURL('url to image upload'))\n    .execute()\n```\n\n4. Providing buffer. `FromBuffer` can read and provide the output buffer. To read the output a key should be provided, which used later to access buffer in the output.\n\n```js\nconst { MozJPEG, Steps, FromBuffer } = require('@imazen/imageflow')\n\nconst output = await new Step(new FromBuffer(getSomeBuffer()))\n    .colorFilterGrayscaleFlat()\n    .encode(new FromBuffer(null, 'key'))\n    .execute()\nconsole.log(output.key)\n```\n\n5. Performing Batch operations. `branch`, `decode`, and `encode` are used together to perform batch operation. This example shows how to create varying size images from a single image.\n\n```js\nconst { MozJPEG, Steps, FromStream, FromFile } = require('@imazen/imageflow')\n\nconst test = new Steps(new FromStream(req))\n    .constrainWithin(800, 800)\n    .branch((step) =\u003e step.encode(new FromFile('large.jpg'), new MozJPEG()))\n    .branch((step) =\u003e\n        step\n            .constrainWithin(400, 400)\n            .branch((step) =\u003e\n                step\n                    .constrainWithin(200, 200)\n                    .branch((step) =\u003e\n                        step\n                            .constrainWithin(100, 100)\n                            .encode(new FromFile('tiny.jpg'), new MozJPEG())\n                    )\n                    .encode(new FromFile('small.jpg'), new MozJPEG())\n            )\n            .encode(new FromFile('medium.jpg'), new MozJPEG())\n    )\n    .execute()\n```\n\n6. Example with complex graph of operations\n\n```js\nconst {\n    MozJPEG,\n    Steps,\n    FromURL,\n    FromFile,\n    FromStream,\n    FromBuffer,\n} = require('@imazen/imageflow')\nconst fs = require('fs')\n\nlet step = new Steps(new FromURL('https://jpeg.org/images/jpeg2000-home.jpg'))\n    .constraintWithin(500, 500)\n    .branch((step) =\u003e\n        step\n            .constraintWithin(400, 400)\n            .branch((step) =\u003e\n                step\n                    .constraintWithin(200, 200)\n                    .rotate90()\n                    .colorFilterGrayscaleFlat()\n                    .encode(new FromFile('./branch_2.jpg'), new MozJPEG(80))\n            )\n            .copyRectangle(\n                (canvas) =\u003e\n                    canvas.decode(\n                        new FromStream(fs.createReadStream('./test.jpg'))\n                    ),\n                { x: 0, y: 0, w: 100, h: 100 },\n                10,\n                10\n            )\n            .encode(new FromFile('./branch.jpg'), new MozJPEG(80))\n    )\n    .constraintWithin(100, 100)\n    .rotate180()\nstep.encode(new FromBuffer(null, 'key'), new MozJPEG(80))\n    .execute()\n    .then(console.log)\n    .catch(console.log)\n```\n\n7. Using query style commands\n\n```js\nawait new Steps().executeCommand(\n    'width=100\u0026height=100\u0026mode=max',\n    new FromBuffer(str),\n    new FromBuffer(null, 'key')\n)\n```\n\n8. Using Decode Options\n\n```js\nconst output = await new Step(\n    new FromBuffer(getSomeBuffer()),\n    new DecodeOptions()\n        .ignoreColorProfileError()\n        .setJPEGDownscaleHint(100, 100)\n        .setWebpDecoderHints(100, 100)\n        .discardColorProfile()\n)\n    .colorFilterGrayscaleFlat()\n    .encode(new FromBuffer(null, 'key'))\n    .execute()\nconsole.log(output.key)\n```\n\n## Local Setup\n\n```bash\ngit clone https://github.com/imazen/imageflow-node\ncd imageflow-node\nyarn\nyarn test\n```\n","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimazen%2Fimageflow-node","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimazen%2Fimageflow-node","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimazen%2Fimageflow-node/lists"}