Module: Imagekitio::TransformationUtils Private

Defined in:
lib/imagekitio/helpers/transformation_utils.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Transformation utilities for building ImageKit URLs Ported from the Node.js SDK

Constant Summary collapse

QUERY_TRANSFORMATION_POSITION =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Constants for transformation parsing

:query
PATH_TRANSFORMATION_POSITION =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

:path
CHAIN_TRANSFORM_DELIMITER =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

":"
TRANSFORM_DELIMITER =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

","
TRANSFORM_KEY_VALUE_DELIMITER =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

"-"
SUPPORTED_TRANSFORMS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Supported transformations mapping Based on imagekit.io/docs/transformations

{
  # Basic sizing & layout
  "width" => "w",
  "height" => "h",
  "aspect_ratio" => "ar",
  "aspectRatio" => "ar",
  "background" => "bg",
  "border" => "b",
  "crop" => "c",
  "crop_mode" => "cm",
  "cropMode" => "cm",
  "dpr" => "dpr",
  "focus" => "fo",
  "quality" => "q",
  "x" => "x",
  "x_center" => "xc",
  "xCenter" => "xc",
  "y" => "y",
  "y_" => "y",
  "y_center" => "yc",
  "yCenter" => "yc",
  "format" => "f",
  "format_" => "f",
  "video_codec" => "vc",
  "videoCodec" => "vc",
  "audio_codec" => "ac",
  "audioCodec" => "ac",
  "radius" => "r",
  "rotation" => "rt",
  "blur" => "bl",
  "named" => "n",
  "default_image" => "di",
  "defaultImage" => "di",
  "flip" => "fl",
  "original" => "orig",
  "start_offset" => "so",
  "startOffset" => "so",
  "end_offset" => "eo",
  "endOffset" => "eo",
  "duration" => "du",
  "streaming_resolutions" => "sr",
  "streamingResolutions" => "sr",

  # AI & advanced effects
  "grayscale" => "e-grayscale",
  "ai_upscale" => "e-upscale",
  "aiUpscale" => "e-upscale",
  "ai_retouch" => "e-retouch",
  "aiRetouch" => "e-retouch",
  "ai_variation" => "e-genvar",
  "aiVariation" => "e-genvar",
  "ai_drop_shadow" => "e-dropshadow",
  "aiDropShadow" => "e-dropshadow",
  "ai_change_background" => "e-changebg",
  "aiChangeBackground" => "e-changebg",
  "ai_remove_background" => "e-bgremove",
  "aiRemoveBackground" => "e-bgremove",
  "ai_remove_background_external" => "e-removedotbg",
  "aiRemoveBackgroundExternal" => "e-removedotbg",
  "ai_edit" => "e-edit",
  "aiEdit" => "e-edit",
  "contrast_stretch" => "e-contrast",
  "contrastStretch" => "e-contrast",
  "shadow" => "e-shadow",
  "sharpen" => "e-sharpen",
  "unsharp_mask" => "e-usm",
  "unsharpMask" => "e-usm",
  "gradient" => "e-gradient",
  "color_replace" => "cr",
  "colorReplace" => "cr",
  "distort" => "e-distort",

  # Other flags & finishing
  "progressive" => "pr",
  "lossless" => "lo",
  "color_profile" => "cp",
  "colorProfile" => "cp",
  "metadata" => "md",
  "opacity" => "o",
  "trim" => "t",
  "zoom" => "z",
  "page" => "pg",

  # Text overlay transformations
  "font_size" => "fs",
  "fontSize" => "fs",
  "font_family" => "ff",
  "fontFamily" => "ff",
  "font_color" => "co",
  "fontColor" => "co",
  "inner_alignment" => "ia",
  "innerAlignment" => "ia",
  "padding" => "pa",
  "alpha" => "al",
  "typography" => "tg",
  "line_height" => "lh",
  "lineHeight" => "lh",

  # Overlay transformations
  "layer_mode" => "lm",
  "layerMode" => "lm",

  # Subtitles transformations
  "font_outline" => "fol",
  "fontOutline" => "fol",
  "font_shadow" => "fsh",
  "fontShadow" => "fsh",
  "color" => "co",

  # Raw pass-through
  "raw" => "raw"
}.freeze

Class Method Summary collapse

Class Method Details

.add_as_query_parameter?(options) ⇒ Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Check if transformations should be added as query parameter

Returns:

  • (Boolean)


132
133
134
135
136
137
# File 'lib/imagekitio/helpers/transformation_utils.rb', line 132

def add_as_query_parameter?(options)
  options[:transformation_position] == QUERY_TRANSFORMATION_POSITION ||
    options["transformation_position"] == QUERY_TRANSFORMATION_POSITION ||
    options[:transformation_position] == "query" ||
    options["transformation_position"] == "query"
end

.get_chain_transform_delimiterObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Get chain transform delimiter



150
151
152
# File 'lib/imagekitio/helpers/transformation_utils.rb', line 150

def get_chain_transform_delimiter
  CHAIN_TRANSFORM_DELIMITER
end

.get_transform_delimiterObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Get transform delimiter



155
156
157
# File 'lib/imagekitio/helpers/transformation_utils.rb', line 155

def get_transform_delimiter
  TRANSFORM_DELIMITER
end

.get_transform_key(transform) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Get transformation key from supported transforms



140
141
142
143
144
145
146
147
# File 'lib/imagekitio/helpers/transformation_utils.rb', line 140

def get_transform_key(transform)
  return "" if transform.nil? || transform.to_s.empty?

  transform_str = transform.to_s
  SUPPORTED_TRANSFORMS[transform_str] ||
    SUPPORTED_TRANSFORMS[transform_str.downcase] ||
    ""
end

.get_transform_key_value_delimiterObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Get transform key-value delimiter



160
161
162
# File 'lib/imagekitio/helpers/transformation_utils.rb', line 160

def get_transform_key_value_delimiter
  TRANSFORM_KEY_VALUE_DELIMITER
end

.safe_btoa(str) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Safe base64 encoding



165
166
167
168
# File 'lib/imagekitio/helpers/transformation_utils.rb', line 165

def safe_btoa(str)
  require("base64")
  Base64.strict_encode64(str)
end