defmodule ImageRs do @moduledoc """ Documentation for `ImageRs`. """ @doc """ Decode image from a given file - **filename**. Path to the image. ## Example ```elixir {:ok, img, shape, type} = ImageRs.from_file("/path/to/image") {h, w, c} = shape ``` """ def from_file(filename) do case ImageRs.Nif.from_file(filename) do {:error, reason} -> {:error, reason} {:ok, result} -> {img, shape, type, channels} = result {:ok, img, shape, String.to_atom(type), String.to_atom(channels)} end end @doc """ Decode image from buffer in memory - **buffer**. Buffered raw file data in memory. ## Example ```elixir # image buffer from a file or perhaps download from Internet {:ok, buffer} = File.read("/path/to/image") # decode the image from memory {:ok, img, shape, type} = ImageRs.from_memory(buffer) {h, w, c} = shape ``` """ def from_memory(buffer) do case ImageRs.Nif.from_memory(buffer) do {:error, reason} -> {:error, reason} {:ok, result} -> {img, shape, type, channels} = result {:ok, img, shape, String.to_atom(type), String.to_atom(channels)} end end end