Native Implemented Function (NIF) bindings for the resvg library.
About resvg from its documentation:
resvg is an SVG rendering library. The core idea is to make a fast, small, portable SVG library with the goal to support the whole SVG spec.
The package can be installed
by adding resvg_nif
to your list of dependencies in mix.exs
:
def deps do
[
{:resvg, "~> 0.4.0"}
]
end
Convert svg to png with:
:ok = Resvg.svg_to_png("input.svg", "output.png")
svg_string = """
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 15a4.5 4.5 0 004.5 4.5H18a3.75 3.75 0 001.332-7.257 3 3 0 00-3.758-3.848 5.25 5.25 0 00-10.233 2.33A4.502 4.502 0 002.25 15z" />
</svg>
"""
:ok = Resvg.svg_string_to_png(svg_string, "output.png", resources_dir: "/tmp")
Easiest way to get started and try more advanced example is is to run the Livebook.
You can contribute to resvg_nif. Please check the CONTRIBUTING.md guide for more information.
This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to our CODE_OF_CONDUCT.md.
- Update the version in both
mix.exs
andREADME.md
. - Tag the commit with the version number, for example:
git tag v0.4.0 commit_hash
. - Push the commit and the tag using:
git push origin master && git push --tags
. - Wait for the CI to generate all the NIFs.
- Generate the NIF checksum with:
mix rustler_precompiled.download Resvg.Native --all
. - Verify that the generated checksum is correct.
- Publish the package with:
mix hex.publish
.
Let me know if you'd like to adjust anything further!
Copyright (c) 2023 Mrdotb
This work is free. You can redistribute it and / or modify it under the terms of the MIT License. See the LICENSE.md file for more details.