Image.ICCProfile (image v0.65.0)

Copy Markdown View Source

Helpers for the ICC color profiles known to libvips.

What "built-in" means

libvips ships with a small set of built-in colour profile names (:srgb, :cmyk, :p3). They are loaded by libvips itself on demand from its own profile collection — :image does not ship any .icc files. The four atoms are simply the names libvips recognises and resolves to its own internal profiles when you pass them to a vips operation that takes a profile.

Anything else (the Path.t/0 form) is treated as a path to an .icc file on disk. Absolute paths are used as-is. Relative paths are resolved against the libvips profile search path. The path is validated by attempting to load it with Vix.Vips.Operation.profile_load/1.

API summary

  • inbuilt/0 returns the four built-in atoms.
  • is_inbuilt/1 is a defguard for the same set.
  • known?/1 returns true for any built-in or any loadable file path. Use it to validate user-supplied profile arguments.

Migration

This module is the new home for the ICC-related helpers that used to live in Image.Color. The contracts are unchanged.

Summary

Types

t()

An ICC profile reference.

Functions

Returns the list of profiles built into libvips.

Guards whether a profile is one of the built-ins.

Returns true if the given profile is known and usable.

Types

t()

@type t() :: :none | :srgb | :cmyk | :p3 | Path.t()

An ICC profile reference.

  • :none means no profile.
  • :srgb, :cmyk, and :p3 refer to the libvips built-in profiles.
  • A path is any file system path. Relative paths are resolved against the system profile directory.

Functions

inbuilt()

@spec inbuilt() :: [t()]

Returns the list of profiles built into libvips.

Examples

iex> Image.ICCProfile.inbuilt()
[:none, :srgb, :cmyk, :p3]

is_inbuilt(profile)

(macro)

Guards whether a profile is one of the built-ins.

known?(profile)

@spec known?(t()) :: boolean()

Returns true if the given profile is known and usable.

Built-in atoms (:none, :srgb, :cmyk, :p3) always return true. File paths are validated by trying to load them with Vix.Vips.Operation.profile_load/1.

Examples

iex> Image.ICCProfile.known?(:srgb)
true

iex> Image.ICCProfile.known?(:none)
true

iex> Image.ICCProfile.known?("/no/such/file.icc")
false