Resolves an Image.Pixel.t() / :average value into a concrete pixel in the
image's colorspace.
A background color specification is either the atom :average (the average
color of the image), or any color accepted by
Image.Pixel.to_pixel/2 (a Color struct, a hex string, a CSS named color,
an atom or a list of numbers).
Either form may also be given as {spec, opacity: opacity} to attach an
explicit opacity (an integer 0..255, a float 0.0..1.0, or :opaque /
:transparent). It is applied only when image has an alpha band,
otherwise it is dropped, since there is no band to carry it. An
invalid opacity is an error either way.
In all cases the resolved pixel matches image's number of bands.
Summary
Types
A background color specification: the image's average color, or any color, optionally with an explicit opacity.
Functions
Resolves a background color spec into a pixel matching image's
interpretation and band layout.
Types
@type spec() :: Image.Pixel.t() | :average | {Image.Pixel.t() | :average, [{:opacity, Image.Pixel.opacity()}]}
A background color specification: the image's average color, or any color, optionally with an explicit opacity.
Functions
@spec resolve(Vix.Vips.Image.t(), spec()) :: {:ok, [number()]} | {:error, Image.Error.t()}
Resolves a background color spec into a pixel matching image's
interpretation and band layout.
Arguments
imageis anyVix.Vips.Image.t/0.specis:average(the image's average color), any color accepted byImage.Pixel.to_pixel/2, or either of those wrapped as{spec, opacity: opacity}to attach an explicit opacity.
Returns
{:ok, [number()]}- the resolved pixel, whose band count matchesimage(an opaque alpha component is appended for:averagewhen the image has alpha), or{:error, t:Image.Error.t/0}
Examples
iex> image = Image.new!(3, 3, color: :red)
iex> Image.BackgroundColor.resolve(image, :average)
{:ok, [255, 0, 0]}
iex> Image.BackgroundColor.resolve(image, :blue)
{:ok, [0, 0, 255]}
iex> Image.BackgroundColor.resolve(image, "#00ff00")
{:ok, [0, 255, 0]}