The options of a rendition (Dimension), kept as one JSON object in
phoenix_kit_storage_dimensions.options (V217) and loaded as this struct, so each
option has a type, a default and validation while a new one needs no migration.
crop_mode— how a fixed box is cropped:"center"(the middle) or"focus"(around the photo's subject). Nothing for a size that keeps proportions.fit_by— the side a size that keeps proportions fixes:"width"or"height"(a horizontal panorama).shape— which pictures it is made for:"any","wide"or"tall".keep_hdr— whether a photo with an HDR gain map keeps the map in this size (Storage.HdrResize).keep_animation— whether an animated GIF or WebP stays animated in this size. On unless a size says otherwise; a fixed box that crops the picture is a still whatever it says. A size with it off is the first frame.strip_metadata— whether the camera's metadata (EXIF with the device, the time and the GPS position, XMP, maker notes) is left out of the rendition. The colour profile stays and the orientation is applied to the pixels, so the picture looks the same. On unless a size says otherwise: a thumbnail of a phone photo is otherwise mostly metadata (about 100 KB of a 113 KB file).
crop_mode, fit_by and shape used to be columns of their own (V210, V211,
V214). V217 copied them in here and emptied the columns, which stay for a few
releases before they are dropped; nothing reads them any more.
A key a newer release wrote that this struct does not know is not carried through a save here: add the field before a release writes it.
Summary
Types
Functions
@spec keys() :: [atom()]
The option names.