{"id":15667998,"url":"https://github.com/naps62/imageflow_ex","last_synced_at":"2025-04-30T22:27:04.378Z","repository":{"id":54611035,"uuid":"317078097","full_name":"naps62/imageflow_ex","owner":"naps62","description":null,"archived":false,"fork":false,"pushed_at":"2022-12-30T15:36:34.000Z","size":105,"stargazers_count":38,"open_issues_count":1,"forks_count":5,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-10-30T07:10:49.766Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Elixir","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/naps62.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-11-30T01:16:39.000Z","updated_at":"2024-09-15T17:08:08.000Z","dependencies_parsed_at":"2023-01-31T11:45:18.095Z","dependency_job_id":null,"html_url":"https://github.com/naps62/imageflow_ex","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naps62%2Fimageflow_ex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naps62%2Fimageflow_ex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naps62%2Fimageflow_ex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/naps62%2Fimageflow_ex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/naps62","download_url":"https://codeload.github.com/naps62/imageflow_ex/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251790933,"owners_count":21644323,"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":[],"created_at":"2024-10-03T14:06:06.401Z","updated_at":"2025-04-30T22:27:04.358Z","avatar_url":"https://github.com/naps62.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ImageflowEx\n\n[![Github Actions Status](https://github.com/naps62/imageflow_ex/workflows/Test%20Suite/badge.svg)](https://github.com/naps62/imageflow_ex/actions)\n[![Hex pm](http://img.shields.io/hexpm/v/imageflow.svg?style=flat)](https://hex.pm/packages/imageflow)\n\n[imageflow-github]: https://github.com/imazen/imageflow\n[imageflow-json-docs]: https://docs.imageflow.io/json/introduction.html\n[my-website]: https://naps62.com\n\nElixir bindings for [Imageflow][imageflow-github], a safe and blazing fast image workflow library.\n\n## Installation\n\nAdd the package to your `mix.exs`:\n\n```elixir\ndef deps do\n  [\n    {:imageflow, \"~\u003e 0.4.1\"}\n  ]\nend\n```\n\n## Usage\n\nThere are two main ways of using `imageflow_ex`:\n\n* [`Imageflow.Graph`](https://hexdocs.pm/imageflow/Imageflow.Graph.html), which is the high-level graph-like API, inspired by [Imageflow.NET](https://github.com/imazen/imageflow-dotnet)\n* [`Imageflow.Native`](https://hexdocs.pm/imageflow/Imageflow.Native.html) which provides lower-level access to Rust binding. Shouldn't be needed unless you need really specific features which aren't yet implemented in the Graph API (but please open an issue so the API can evolve).\n\nUsing the Graph API allows you to create processing pipelines to process your\nimages:\n\n\n```elixir\nalias Imageflow.Graph\n\nGraph.new()\n|\u003e Graph.decode_file(\"input.png\")     # read input.png\n|\u003e Graph.constrain(200, 200)          # constrain image to 200x200\n|\u003e Graph.saturation(0.5)              # set saturation to 0.5 (-1..1 range)\n|\u003e Graph.encode_to_file(\"output.png\") # specify output file\n|\u003e Graph.run()                        # run the job\n```\n\n### Low-level API\n\nThis provides direct access to NIF bindings. You probably don't need this,\nunless you're relying on APIs that are not yet supported by the Graph API\n(please submit an issue).\n\nCheck `Imageflow.Native` for documentation and examples.\n\n## Contributing\n\nFeel free to contribute. Either by opening an issue, a Pull Request, or contacting the\n[author](mailto:mpalhas@gmail.com) directly\n\nIf you found a bug, please open an issue. You can also open a PR for bugs or new\nfeatures. PRs will be reviewed and subject to our style guide and linters.\n\n# About\n\nThis project was developed by [Miguel Palhas](https://naps62.com), and is published\nunder the ISC license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaps62%2Fimageflow_ex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnaps62%2Fimageflow_ex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnaps62%2Fimageflow_ex/lists"}