Packages
image
0.36.2
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/application.ex
defmodule Image.Application do
@moduledoc false
# This env var, if set, will prevent `libvips`
# from loading untrusted loaders. We set this to
# true if it is not otherwise set.
# See https://github.com/kipcole9/image/issues/9
@untrusted_env_var "VIPS_BLOCK_UNTRUSTED"
use Application
require Logger
@doc false
def start(_type, _args) do
Image.SetSafeLoader.set(@untrusted_env_var)
Supervisor.start_link(
children(Code.ensure_loaded?(Bumblebee)),
strategy: :one_for_one,
name: Image.Supervisor
)
end
# When Bumblebee is available
if Code.ensure_loaded?(Bumblebee) do
@services [
{{Image.Classification, :classifier, []}, true},
{{Image.Generation, :generator, []}, false}
]
defp children(true) do
Enum.reduce(@services, [], fn {{module, function, args}, start?}, acc ->
if autostart?(function, start?) do
case apply(module, function, args) do
{:error, reason} ->
Logger.warning("Cannot autostart #{inspect(function)}. Error: #{inspect(reason)}")
acc
server ->
[server | acc]
end
else
acc
end
end)
end
end
# When bumblebee is not available
defp children(_) do
[]
end
@doc false
def autostart?(service, start?) do
:image
|> Application.get_env(service, autostart: start?)
|> Keyword.get(:autostart)
end
end
defmodule Image.SetSafeLoader do
@moduledoc false
def set(env_var) do
unless System.get_env(env_var) do
System.put_env(env_var, "TRUE")
end
{:ok, env_var}
end
end