Packages
image
0.54.3
0.72.0
0.71.0
0.70.0
0.69.0
0.68.0
0.67.0
0.67.0-dev
retired
0.66.0
0.65.0
0.64.0
0.63.0
0.62.1
0.62.0
0.61.1
0.61.0
0.60.0
0.59.3
0.59.2
0.59.1
0.59.0
0.58.0
0.57.0
0.56.1
0.56.0
0.55.2
0.55.1
retired
0.55.0
0.54.4
0.54.3
0.54.2
0.54.1
0.54.0
0.53.0
0.52.3
0.52.2
0.52.1
0.52.0
retired
0.51.0
0.50.0
0.49.0
0.48.1
0.48.0
0.47.0
0.46.0
0.45.0
0.44.0
0.43.2
0.43.1
0.43.0
0.42.0
0.41.0
0.40.0
0.39.3
0.39.2
0.39.1
0.39.0
0.38.4
0.38.3
0.38.2
0.38.1
0.38.0
0.37.0
0.36.2
0.36.1
0.36.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.1
0.31.0
0.30.0
0.29.0
0.28.2
0.28.1
0.28.0
0.27.0
0.26.0
0.25.1
0.25.0
0.24.1
0.24.0
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.0
0.20.0
retired
0.19.0
0.18.1
0.18.0
0.17.0
0.16.0
0.15.0
0.14.4
0.14.2
0.14.1
0.14.0
retired
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.10.0-rc.0
retired
0.9.0
retired
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
An approachable image processing library primarily based upon Vix and libvips that is NIF-based, fast, multi-threaded, pipelined and has a low memory footprint.
Current section
Files
Jump to
Current section
Files
lib/image/options/avatar.ex
defmodule Image.Options.Avatar do
@moduledoc """
Options and option validation for `Image.avatar/2`.
"""
alias Image.Options.Crop
@type avatar_option ::
{:size, pos_integer()}
| {:shape, :circle | :square | :squircle}
| {:crop, Crop.crop_focus()}
@type avatar_options :: [avatar_option()]
@valid_shapes [:circle, :square, :squircle]
# Standard size of an avatar image, at least for
# this library
@default_avatar_size 180
def validate_options(options) do
options = Keyword.merge(default_options(), options)
case Enum.reduce_while(options, options, &validate_option(&1, &2)) do
{:error, reason} -> {:error, reason}
options -> {:ok, options}
end
end
defp validate_option({:size, size}, options) when is_integer(size) and size > 0 do
{:cont, options}
end
defp validate_option({:shape, shape}, options) when shape in @valid_shapes do
{:cont, options}
end
# Same as crop options but we default to
# cropping for attention as the default
defp validate_option({:crop, crop}, options) do
Crop.validate_crop(crop, options)
end
defp validate_option(option, _options) do
{:halt, {:error, invalid_option(option)}}
end
defp invalid_option(option) do
"Invalid Image.avatar option or option value: #{inspect(option)}"
end
defp default_options do
[
shape: :circle,
crop: :center,
size: @default_avatar_size
]
end
@doc false
def default_avatar_size do
@default_avatar_size
end
end