Packages
Simple binding to read QR codes using Rust bardecoder crate. Uses Rustler for bindings.
Current section
Files
Jump to
Current section
Files
lib/bardecoder_ex.ex
defmodule BardecoderEx.Metadata do
defstruct [
version: 0,
ecc_level: 0,
mask: 0,
bounds: [],
]
end
defmodule BardecoderEx do
@moduledoc """
Call out to nif to detect barcodes using Rust bardecoder crate.
"""
use Rustler, otp_app: :bardecoder_ex, crate: :bardecoder_ex_nif
@doc """
Detect a QR code in the image provided as a binary()
Returns `[{:ok, {%BardecoderEx.Metadata{}, String.t()}} | {:error, String.t()}]`.
## Examples
iex> BardecoderEx.detect_qr_codes(File.read!("./test.png"))
{:ok,
[
ok: {%{
__struct__: BardecoderEx.Metadata,
bounds: [{474, 674}, {569, 674}, {569, 770}, {474, 770}],
ecc_level: 1,
version: 41
},
"The contents of the QR code!"}
]}
"""
@spec detect_qr_codes(binary()) :: {:ok, [{:ok, {%BardecoderEx.Metadata{}, String.t()}} | {:error, String.t()}]} | {:error, String.t()}
def detect_qr_codes(_image_bytes), do: :erlang.nif_error(:nif_not_loaded)
end