Packages
image
0.67.0
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/blurhash/utils.ex
defmodule Image.Blurhash.Utils do
@moduledoc false
def srgb_to_linear(srgb_color) do
value = srgb_color / 255
if value <= 0.04045,
do: value / 12.92,
else: :math.pow((value + 0.055) / 1.055, 2.4)
end
def linear_to_srgb(linear_color) do
value = max(0, min(1, linear_color))
if value <= 0.0031308,
do: round(value * 12.92 * 255 + 0.5),
else: round((1.055 * :math.pow(value, 1 / 2.4) - 0.055) * 255 + 0.5)
end
defp sign_pow(value, exponent) do
sign =
if value < 0,
do: -1,
else: 1
sign * :math.pow(abs(value), exponent)
end
def unquantize_color(quantized_color, max_ac),
do: sign_pow((quantized_color - 9) / 9, 2) * max_ac
def quantize_color(color, max_ac) do
value = floor(sign_pow(color / max_ac, 0.5) * 9 + 9.5)
cond do
value > 18 -> 18
value < 0 -> 0
true -> value
end
end
end