imgix-rails 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 57076ae3e45e23986cf73972ab57e6f1ea9c3c4a
4
+ data.tar.gz: 1f557d144e7cba2b5e2ed80f37a9fad560594604
5
+ SHA512:
6
+ metadata.gz: b08a5cfa44532e6e8269326506fe0b42e013b90ad6c65e667b57713931cefe35e65d81ca4cef10f56f0d74b2ed9df71749016b056c6e29872b862a0be40cb05a
7
+ data.tar.gz: c4f19d240009a659fb66ea47ad49347ea2548729353b7223ccaa9b5cf9b47d82809c36cb3ff55a6f361417c6652a3dbf47cb345478b3701f2c8e8a2fd04b41fb
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.2
4
+ script: bundle exec rspec
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in imgix-rails.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,157 @@
1
+ # imgix-rails
2
+
3
+ [![Build Status](https://travis-ci.org/imgix/imgix-rails.png?branch=master)](https://travis-ci.org/imgix/imgix-rails)
4
+
5
+ `imgix-rails` is a gem designed to make integrating imgix into your Rails app easier. It builds on [imgix-rb](https://github.com/imgix/imgix-rb) to offer a few Rails-specific interfaces.
6
+
7
+ imgix is a real-time image processing service and CDN. It allows you to manipulate images merely by changing their URL parameters. For a full list of URL parameters, please see the [imgix URL API documentation](https://www.imgix.com/docs/reference).
8
+
9
+ We recommend using something like [Paperclip](https://github.com/thoughtbot/paperclip), [Carrierwave](https://github.com/carrierwaveuploader/carrierwave), or [s3_direct_upload](https://github.com/waynehoover/s3_direct_upload) to handle uploads and then serving the images out using this gem.
10
+
11
+ ## Installation
12
+
13
+ Add this line to your application's Gemfile:
14
+
15
+ ```ruby
16
+ gem 'imgix-rails'
17
+ ```
18
+
19
+ And then execute:
20
+
21
+ $ bundle
22
+
23
+ ## Usage
24
+
25
+ imgix-rails provides a few different hooks to work with your existing Rails application. All current methods are drop-in replacements for the `image_tag` helper.
26
+
27
+ ### Configuration
28
+
29
+ Before you get started, you will need to define your imgix configuration in your `config/application.rb`, or in an environment-specific configuration file.
30
+
31
+ ```ruby
32
+ Rails.application.configure do
33
+ config.imgix = {
34
+ source: "Name of your source, e.g. assets.imgix.net",
35
+ secure_url_token: "optional secure URL token found in your dashboard (https://webapp.imgix.com)"
36
+ }
37
+ end
38
+ ```
39
+
40
+ ### ix_image_tag
41
+
42
+ The simplest way of working with imgix-rails is to use the `ix_image_tag`, this allows you to pass parameters to imgix to handle things like resizing, cropping, etc.
43
+
44
+ ```erb
45
+ <%= ix_image_tag('/path/to/image.jpg', { w: 400, h: 300 }) %>
46
+ ```
47
+
48
+ Will render out HTML like the following:
49
+
50
+ ```html
51
+ <img src="https://assets.imgix.net/path/to/image?w=400&h=300" />
52
+ ```
53
+
54
+ We recommend leveraging this to generate powerful helpers within your application like the following:
55
+
56
+ ```ruby
57
+ def profile_image_tag(user)
58
+ ix_image_tag(user.profile_image_url, { w: 100, h: 200, fit: 'crop' })
59
+ end
60
+ ```
61
+
62
+ Then rendering the portrait in your application is very easy:
63
+
64
+ ```erb
65
+ <%= profile_image_tag(@user) %>
66
+ ```
67
+
68
+ ### ix_responsive_image_tag
69
+
70
+ The `ix_responsive_image_tag` helper method makes it easy to bring responsive imagery to your Rails app. We talk a bit about using the `srcset` attribute in an application in the following blog post: [“Responsive Images with `srcset` and imgix.”](http://blog.imgix.com/post/127012184664/responsive-images-with-srcset-imgix)
71
+
72
+ The `ix_responsive_image_tag` will generate an `<img>` element with a filled-out `srcset` attribute that leans on imgix to do the hard work.
73
+
74
+ It will use the configured device-pixel-ratios in the `config.imgix[:responsive_resolutions]` value. It will default to `[1, 2]`.
75
+
76
+ ```erb
77
+ <%= ix_responsive_image_tag('/users/1/avatar.png', { w: 400, h: 300 }) %>
78
+ ```
79
+
80
+ This will generate the following HTML:
81
+
82
+ ```html
83
+ <img
84
+ srcset="https://assets.imgix.net/users/1/avatar.png?w=400&h=300 1x,
85
+ https://assets.imgix.net/users/1/avatar.png?w=400&h=300&dpr=2 2x"
86
+ src="https://assets.imgix.net/users/1/avatar.png?w=400&h=300"
87
+ />
88
+ ```
89
+
90
+ ### ix_picture_tag
91
+
92
+ The `ix_picture_tag` helper method makes it easy to generate `<picture>` elements in your Rails app.
93
+
94
+ The `ix_picture_tag` method will generate a `<picture>` element with a single `<source>` element and a fallback `<img>` element. We are open for new directions to take this in.
95
+
96
+ It will use the configured device-pixel-ratios in the `config.imgix[:responsive_resolutions]` value. It will default to `[1, 2]`.
97
+
98
+ ```erb
99
+ <%= ix_picture_tag('/users/1/avatar.png', { w: 400, h: 300 }) %>
100
+ ```
101
+
102
+ Will generate the following HTML:
103
+
104
+ ```html
105
+ <picture>
106
+ <source srcset="https://assets.imgix.net/users/1/avatar.png?w=400&h=300 1x,
107
+ https://assets.imgix.net/users/1/avatar.png?w=400&h=300&dpr=2 2x" />
108
+ <img src="https://assets.imgix.net/users/1/avatar.png?w=400&h=300" />
109
+ </picture>
110
+ ```
111
+
112
+ ### Hostname Removal
113
+
114
+ You can also configure imgix-rails to disregard given hostnames and only use the path component from given URLs. This is useful if you have [a Web Folder or an Amazon S3 imgix Source configured](https://www.imgix.com/docs/tutorials/creating-sources) but store the fully-qualified URLs for those resources in your database.
115
+
116
+ For example, let's say you are using S3 for storage. An `#avatar_url` value might look like the following in your application:
117
+
118
+ ```ruby
119
+ @user.avatar_url #=> "https://s3.amazonaws.com/my-bucket/users/1.png"
120
+ ```
121
+
122
+ You would then configure imgix in your Rails application to disregard the `'s3.amazonaws.com'` hostname:
123
+
124
+ ```ruby
125
+ Rails.application.configure do
126
+ config.imgix = {
127
+ source: "my-imgix-source.imgix.net",
128
+ hostname_to_replace: "s3.amazonaws.com"
129
+ }
130
+ end
131
+ ```
132
+
133
+ Now when you call `ix_image_tag` or another helper, you get an imgix URL:
134
+
135
+ ```erb
136
+ <%= ix_image_tag(@user.avatar_url) %>
137
+ ```
138
+
139
+ Renders:
140
+
141
+ ```html
142
+ <img src="https://my-imgix-source.imgix.net/my-bucket/users/1.png" />
143
+ ```
144
+
145
+ ## Development
146
+
147
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
148
+
149
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
150
+
151
+ ## Contributing
152
+
153
+ 1. Fork it ( https://github.com/[my-github-username]/imgix-rails/fork )
154
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
155
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
156
+ 4. Push to the branch (`git push origin my-new-feature`)
157
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "imgix/rails"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+
5
+ bundle install
6
+
7
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,35 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'imgix/rails/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "imgix-rails"
8
+ spec.version = Imgix::Rails::VERSION
9
+ spec.authors = ["Kelly Sutton"]
10
+ spec.email = ["kelly@imgix.com"]
11
+
12
+ spec.summary = %q{Makes integrating imgix into your Rails app easier. It builds on imgix-rb to offer a few Rails-specific interfaces.}
13
+ spec.description = %q{Makes integrating imgix into your Rails app easier. It builds on imgix-rb to offer a few Rails-specific interfaces.}
14
+ spec.homepage = "https://github.com/imgix/imgix-rails"
15
+
16
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
17
+ # delete this section to allow pushing this gem to any host.
18
+ if spec.respond_to?(:metadata)
19
+ spec.metadata['allowed_push_host'] = "https://rubygems.org"
20
+ else
21
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
22
+ end
23
+
24
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ spec.bindir = "exe"
26
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
+ spec.require_paths = ["lib"]
28
+
29
+ spec.add_runtime_dependency "imgix", '~> 0.3', '>= 0.3.5'
30
+
31
+ spec.add_development_dependency "bundler", "~> 1.9"
32
+ spec.add_development_dependency "rake", "~> 10.0"
33
+ spec.add_development_dependency "rspec"
34
+ spec.add_development_dependency "rspec-rails"
35
+ end
data/lib/.DS_Store ADDED
Binary file
Binary file
@@ -0,0 +1,21 @@
1
+ require "imgix/rails/version"
2
+
3
+ if defined? Rails::Railtie
4
+ require "imgix/railtie"
5
+ end
6
+
7
+ require "active_support"
8
+
9
+ module Imgix
10
+ module Rails
11
+ class Config < ::ActiveSupport::OrderedOptions; end
12
+
13
+ def self.config
14
+ @@config ||= Config.new
15
+ end
16
+
17
+ def self.configure
18
+ yield self.config
19
+ end
20
+ end
21
+ end
Binary file
@@ -0,0 +1,5 @@
1
+ module Imgix
2
+ module Rails
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,105 @@
1
+ require "imgix"
2
+
3
+ module Imgix
4
+ module Rails
5
+ class ConfigurationError < StandardError; end
6
+
7
+ module ViewHelper
8
+ def ix_image_tag(source, options={})
9
+ validate_configuration!
10
+
11
+ source = replace_hostname(source)
12
+ normal_opts = options.slice!(*available_parameters)
13
+
14
+ image_tag(client.path(source).to_url(options).html_safe, normal_opts)
15
+ end
16
+
17
+ def ix_responsive_image_tag(source, options={})
18
+ options.merge!({
19
+ srcset: srcset_for(source, options)
20
+ })
21
+
22
+ ix_image_tag(source, options)
23
+ end
24
+
25
+ def ix_picture_tag(source, options={})
26
+ content_tag(:picture) do
27
+ concat(tag(:source, srcset: srcset_for(source, options)))
28
+ concat(ix_image_tag(source, options))
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ def validate_configuration!
35
+ imgix = ::Imgix::Rails.config.imgix
36
+ unless imgix.try(:[], :source)
37
+ raise ConfigurationError.new("imgix source is not configured. Please set config.imgix[:source].")
38
+ end
39
+
40
+ unless imgix[:source].is_a?(Array) || imgix[:source].is_a?(String)
41
+ raise ConfigurationError.new("imgix source must be a String or an Array.")
42
+ end
43
+ end
44
+
45
+ def replace_hostname(source)
46
+ new_source = source.dup
47
+
48
+ # Replace any hostnames configured to trim things down just to their paths.
49
+ # We use split to remove the protocol in the process.
50
+ hostnames_to_remove.each do |hostname|
51
+ splits = source.split(hostname)
52
+ new_source = splits.last if splits.size > 1
53
+ end
54
+
55
+ new_source
56
+ end
57
+
58
+ def client
59
+ return @client if @client
60
+ imgix = ::Imgix::Rails.config.imgix
61
+
62
+ opts = {
63
+ host: imgix[:source],
64
+ library_param: "rails",
65
+ library_version: Imgix::Rails::VERSION
66
+ }
67
+
68
+ if imgix[:secure_url_token].present?
69
+ opts[:token] = imgix[:secure_url_token]
70
+ end
71
+
72
+ if imgix.has_key?(:include_library_param)
73
+ opts[:include_library_param] = imgix[:include_library_param]
74
+ end
75
+
76
+ @client = ::Imgix::Client.new(opts)
77
+ end
78
+
79
+ def available_parameters
80
+ @available_parameters ||= parameters.keys
81
+ end
82
+
83
+ def parameters
84
+ path = File.expand_path("../../../../vendor/parameters.json", __FILE__)
85
+ @parameters ||= JSON.parse(File.read(path), symbolize_names: true)[:parameters]
86
+ end
87
+
88
+ def srcset_for(source, options={})
89
+ configured_resolutions.map do |resolution|
90
+ srcset_options = options.slice(*available_parameters)
91
+ srcset_options[:dpr] = resolution unless resolution == 1
92
+ client.path(source).to_url(srcset_options) + " #{resolution}x"
93
+ end.join(', ')
94
+ end
95
+
96
+ def configured_resolutions
97
+ ::Imgix::Rails.config.imgix[:responsive_resolutions] || [1, 2]
98
+ end
99
+
100
+ def hostnames_to_remove
101
+ Array(::Imgix::Rails.config.imgix[:hostname_to_replace] || ::Imgix::Rails.config.imgix[:hostnames_to_replace])
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,20 @@
1
+ require "rails"
2
+ require "rails/railtie"
3
+ require "imgix/rails"
4
+ require "imgix/rails/view_helper"
5
+
6
+ module Imgix
7
+ module Rails
8
+ class Railtie < ::Rails::Railtie
9
+ config.imgix = ActiveSupport::OrderedOptions.new
10
+
11
+ initializer "imgix-rails.view_helper" do |app|
12
+ Imgix::Rails.configure do |config|
13
+ config.imgix = app.config.imgix
14
+ end
15
+
16
+ ActionView::Base.send :include, ViewHelper
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,1145 @@
1
+ {
2
+ "parameters": {
3
+ "auto": {
4
+ "display_name": "auto features",
5
+ "category": "automatic",
6
+ "expects": "list",
7
+ "possible_values": [
8
+ "enhance",
9
+ "format",
10
+ "redeye"
11
+ ],
12
+ "url": "https://www.imgix.com/docs/reference/automatic#param-auto",
13
+ "short_description": "Applies automatic enhancements to images."
14
+ },
15
+ "ba": {
16
+ "display_name": "blend align",
17
+ "category": "blend",
18
+ "expects": "list",
19
+ "possible_values": [
20
+ "top",
21
+ "bottom",
22
+ "left",
23
+ "right",
24
+ "middle"
25
+ ],
26
+ "depends": [
27
+ "blend"
28
+ ],
29
+ "url": "https://www.imgix.com/docs/reference/blend#param-blendalign",
30
+ "short_description": "Changes the blend alignment relative to the parent image."
31
+ },
32
+ "balph": {
33
+ "display_name": "blend alpha",
34
+ "category": "blend",
35
+ "expects": "number",
36
+ "default": 100,
37
+ "min": 0,
38
+ "max": 100,
39
+ "depends": [
40
+ "blend"
41
+ ],
42
+ "url": "https://www.imgix.com/docs/reference/blend#param-blendalpha",
43
+ "short_description": "Changes the alpha of the blend image."
44
+ },
45
+ "bc": {
46
+ "display_name": "blend crop",
47
+ "category": "blend",
48
+ "expects": "list",
49
+ "possible_values": [
50
+ "top",
51
+ "bottom",
52
+ "left",
53
+ "right",
54
+ "faces"
55
+ ],
56
+ "depends": [
57
+ "blend"
58
+ ],
59
+ "url": "https://www.imgix.com/docs/reference/blend#param-blendcrop",
60
+ "short_description": "Specifies the type of crop for blend images."
61
+ },
62
+ "bf": {
63
+ "display_name": "blend fit",
64
+ "category": "blend",
65
+ "expects": "string",
66
+ "default": "clip",
67
+ "possible_values": [
68
+ "clamp",
69
+ "clip",
70
+ "crop",
71
+ "scale",
72
+ "max"
73
+ ],
74
+ "depends": [
75
+ "blend"
76
+ ],
77
+ "url": "https://www.imgix.com/docs/reference/blend#param-blendfit",
78
+ "short_description": "Specifies the fit mode for blend images."
79
+ },
80
+ "bg": {
81
+ "display_name": "background color",
82
+ "category": "background",
83
+ "expects": "hex_color",
84
+ "default": "fff",
85
+ "url": "https://www.imgix.com/docs/reference/background#param-bg",
86
+ "short_description": "Colors the background of padded images."
87
+ },
88
+ "bh": {
89
+ "display_name": "blend height",
90
+ "category": "blend",
91
+ "expects": "number",
92
+ "min": 0,
93
+ "depends": [
94
+ "blend"
95
+ ],
96
+ "url": "https://www.imgix.com/docs/reference/blend#param-blendheight",
97
+ "short_description": "Adjusts the height of the blend image."
98
+ },
99
+ "blend": {
100
+ "display_name": "blend",
101
+ "category": "blend",
102
+ "expects": [
103
+ "hex_color",
104
+ "url"
105
+ ],
106
+ "url": "https://www.imgix.com/docs/reference/blend#param-blend",
107
+ "short_description": "Specifies the location of the blend image."
108
+ },
109
+ "blur": {
110
+ "display_name": "blur",
111
+ "category": "stylize",
112
+ "expects": "number",
113
+ "default": 0,
114
+ "min": 0,
115
+ "max": 2000,
116
+ "url": "https://www.imgix.com/docs/reference/stylize#param-blur",
117
+ "short_description": "Applies a gaussian blur to an image."
118
+ },
119
+ "bm": {
120
+ "display_name": "blend mode",
121
+ "category": "blend",
122
+ "expects": "string",
123
+ "default": "overlay",
124
+ "possible_values": [
125
+ "color",
126
+ "burn",
127
+ "dodge",
128
+ "darken",
129
+ "difference",
130
+ "exclusion",
131
+ "hardlight",
132
+ "hue",
133
+ "lighten",
134
+ "luminosity",
135
+ "multiply",
136
+ "overlay",
137
+ "saturation",
138
+ "screen",
139
+ "softlight"
140
+ ],
141
+ "depends": [
142
+ "blend"
143
+ ],
144
+ "url": "https://www.imgix.com/docs/reference/blend#param-blendmode",
145
+ "short_description": "Sets the blend mode for a blend image."
146
+ },
147
+ "border": {
148
+ "display_name": "border",
149
+ "category": "border_and_padding",
150
+ "expects": "list",
151
+ "length": 2,
152
+ "url": "https://www.imgix.com/docs/reference/border-padding#param-border",
153
+ "short_description": "Applies a border to an image."
154
+ },
155
+ "bp": {
156
+ "display_name": "blend padding",
157
+ "category": "blend",
158
+ "expects": "number",
159
+ "default": 0,
160
+ "min": 0,
161
+ "depends": [
162
+ "blend"
163
+ ],
164
+ "url": "https://www.imgix.com/docs/reference/blend#param-blendpadding",
165
+ "short_description": "Applies padding to the blend image."
166
+ },
167
+ "bri": {
168
+ "display_name": "brightness",
169
+ "category": "adjustment",
170
+ "expects": "number",
171
+ "default": 0,
172
+ "min": -100,
173
+ "max": 100,
174
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-bri",
175
+ "short_description": "Adjusts the brightness of the source image."
176
+ },
177
+ "bs": {
178
+ "display_name": "blend size",
179
+ "category": "blend",
180
+ "expects": "string",
181
+ "possible_values": [
182
+ "inherit"
183
+ ],
184
+ "depends": [
185
+ "blend"
186
+ ],
187
+ "url": "https://www.imgix.com/docs/reference/blend#param-blendsize",
188
+ "short_description": "Adjusts the size of the blend image."
189
+ },
190
+ "bw": {
191
+ "display_name": "blend width",
192
+ "category": "blend",
193
+ "expects": "number",
194
+ "min": 0,
195
+ "depends": [
196
+ "blend"
197
+ ],
198
+ "url": "https://www.imgix.com/docs/reference/blend#param-blendwidth",
199
+ "short_description": "Adjusts the width of the blend image."
200
+ },
201
+ "bx": {
202
+ "display_name": "blend x",
203
+ "category": "blend",
204
+ "expects": "number",
205
+ "default": 0,
206
+ "min": 0,
207
+ "depends": [
208
+ "blend"
209
+ ],
210
+ "url": "https://www.imgix.com/docs/reference/blend#param-blendx",
211
+ "short_description": "Adjusts the x-offset of the blend image relative to its parent."
212
+ },
213
+ "by": {
214
+ "display_name": "blend y",
215
+ "category": "blend",
216
+ "expects": "number",
217
+ "default": 0,
218
+ "min": 0,
219
+ "depends": [
220
+ "blend"
221
+ ],
222
+ "url": "https://www.imgix.com/docs/reference/blend#param-blendy",
223
+ "short_description": "Adjusts the y-offset of the blend image relative to its parent."
224
+ },
225
+ "chromasub": {
226
+ "display_name": "chroma subsampling",
227
+ "category": "format",
228
+ "expects": "integer",
229
+ "default": 420,
230
+ "possible_values": [
231
+ 444,
232
+ 422,
233
+ 420
234
+ ],
235
+ "url": "https://www.imgix.com/docs/reference/format#param-chromasub",
236
+ "short_description": "Specifies the output chroma subsampling rate."
237
+ },
238
+ "colorquant": {
239
+ "display_name": "color quantization",
240
+ "category": "format",
241
+ "expects": "integer",
242
+ "min": 2,
243
+ "max": 256,
244
+ "url": "https://www.imgix.com/docs/reference/format#param-colorquant",
245
+ "short_description": "Limits the number of unique colors in an image."
246
+ },
247
+ "colors": {
248
+ "display_name": "color count",
249
+ "category": "palette",
250
+ "expects": "integer",
251
+ "default": 6,
252
+ "min": 0,
253
+ "max": 16,
254
+ "depends": [
255
+ "palette"
256
+ ],
257
+ "url": "https://www.imgix.com/docs/reference/palette#param-colors",
258
+ "short_description": "Specifies how many colors to include in a palette-extraction response."
259
+ },
260
+ "con": {
261
+ "display_name": "contrast",
262
+ "category": "adjustment",
263
+ "expects": "number",
264
+ "default": 0,
265
+ "min": -100,
266
+ "max": 100,
267
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-con",
268
+ "short_description": "Adjusts the contrast of the source image."
269
+ },
270
+ "crop": {
271
+ "display_name": "crop mode",
272
+ "category": "size",
273
+ "expects": "list",
274
+ "possible_values": [
275
+ "top",
276
+ "bottom",
277
+ "left",
278
+ "right",
279
+ "faces"
280
+ ],
281
+ "depends": [
282
+ "fit=crop"
283
+ ],
284
+ "url": "https://www.imgix.com/docs/reference/size#param-crop",
285
+ "short_description": "Specifies how to crop an image."
286
+ },
287
+ "cs": {
288
+ "display_name": "colorspace",
289
+ "category": "format",
290
+ "expects": "string",
291
+ "possible_values": [
292
+ "srgb",
293
+ "adobergb1998"
294
+ ],
295
+ "short_description": "Specifies the color space of the output image."
296
+ },
297
+ "dl": {
298
+ "display_name": "download",
299
+ "category": "format",
300
+ "expects": "string",
301
+ "url": "https://www.imgix.com/docs/reference/format#param-dl",
302
+ "short_description": "Marks a URL should use send-file to deliver its response."
303
+ },
304
+ "dpr": {
305
+ "display_name": "device pixel ratio",
306
+ "category": "pixel_density",
307
+ "expects": "number",
308
+ "default": 1,
309
+ "min": 0.75,
310
+ "max": 8,
311
+ "url": "https://www.imgix.com/docs/reference/pixeldensity#param-dpr",
312
+ "short_description": "Adjusts the device-pixel-ratio of the output image."
313
+ },
314
+ "exp": {
315
+ "display_name": "exposure",
316
+ "category": "adjustment",
317
+ "expects": "number",
318
+ "default": 0,
319
+ "min": -100,
320
+ "max": 100,
321
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-exp",
322
+ "short_description": "Adjusts the exposure of the output image."
323
+ },
324
+ "faceindex": {
325
+ "display_name": "face index",
326
+ "category": "face_detection",
327
+ "expects": "integer",
328
+ "min": 1,
329
+ "url": "https://www.imgix.com/docs/reference/face-detection#param-faceindex",
330
+ "short_description": "Selects a face to crop to."
331
+ },
332
+ "facepad": {
333
+ "display_name": "face padding",
334
+ "category": "face_detection",
335
+ "expects": "number",
336
+ "default": 1,
337
+ "min": 0,
338
+ "url": "https://www.imgix.com/docs/reference/face-detection#param-facepad",
339
+ "short_description": "Adjusts padding around a selected face."
340
+ },
341
+ "fit": {
342
+ "display_name": "fit mode",
343
+ "category": "size",
344
+ "expects": "string",
345
+ "default": "clip",
346
+ "possible_values": [
347
+ "clamp",
348
+ "clip",
349
+ "crop",
350
+ "facearea",
351
+ "fill",
352
+ "max",
353
+ "min",
354
+ "scale"
355
+ ],
356
+ "aliases": [
357
+ "f"
358
+ ],
359
+ "url": "https://www.imgix.com/docs/reference/size#param-fit",
360
+ "short_description": "Specifies how to map the source image to the output image dimensions."
361
+ },
362
+ "flip": {
363
+ "display_name": "flip direction",
364
+ "category": "rotation",
365
+ "expects": "string",
366
+ "possible_values": [
367
+ "h",
368
+ "v",
369
+ "hv"
370
+ ],
371
+ "url": "https://www.imgix.com/docs/reference/rotation#param-flip",
372
+ "short_description": "Flips an image on a specified axis."
373
+ },
374
+ "fm": {
375
+ "display_name": "output format",
376
+ "category": "format",
377
+ "expects": "string",
378
+ "possible_values": [
379
+ "gif",
380
+ "jpg",
381
+ "jp2",
382
+ "json",
383
+ "jxr",
384
+ "pjpg",
385
+ "mp4",
386
+ "png",
387
+ "png8",
388
+ "png32",
389
+ "webp"
390
+ ],
391
+ "url": "https://www.imgix.com/docs/reference/format#param-fm",
392
+ "short_description": "Changes the format of the output image."
393
+ },
394
+ "gam": {
395
+ "display_name": "gamma",
396
+ "category": "adjustment",
397
+ "expects": "number",
398
+ "default": 0,
399
+ "min": -100,
400
+ "max": 100,
401
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-gam",
402
+ "short_description": "Adjusts the gamma of the source image."
403
+ },
404
+ "h": {
405
+ "display_name": "height",
406
+ "category": "size",
407
+ "expects": [
408
+ "number",
409
+ "unit_scalar"
410
+ ],
411
+ "url": "https://www.imgix.com/docs/reference/size#param-h",
412
+ "short_description": "Adjusts the height of the output image."
413
+ },
414
+ "high": {
415
+ "display_name": "high",
416
+ "category": "adjustment",
417
+ "expects": "number",
418
+ "default": 0,
419
+ "min": -100,
420
+ "max": 100,
421
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-high",
422
+ "short_description": "Adjusts the highlights of the source image."
423
+ },
424
+ "htn": {
425
+ "display_name": "halftone",
426
+ "category": "stylize",
427
+ "expects": "number",
428
+ "default": 0,
429
+ "min": 0,
430
+ "max": 100,
431
+ "url": "https://www.imgix.com/docs/reference/stylize#param-htn",
432
+ "short_description": "Applies a half-tone effect to the source image."
433
+ },
434
+ "hue": {
435
+ "display_name": "hue shift",
436
+ "category": "adjustment",
437
+ "expects": "number",
438
+ "default": 0,
439
+ "min": 0,
440
+ "max": 360,
441
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-hue",
442
+ "short_description": "Adjusts the hue of the source image."
443
+ },
444
+ "invert": {
445
+ "display_name": "invert",
446
+ "category": "adjustment",
447
+ "expects": "string",
448
+ "possible_values": [
449
+ "true"
450
+ ],
451
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-invert",
452
+ "short_description": "Inverts the colors on the source image."
453
+ },
454
+ "lossless": {
455
+ "display_name": "lossless",
456
+ "category": "format",
457
+ "expects": "integer",
458
+ "default": 0,
459
+ "possible_values": [
460
+ 0,
461
+ 1
462
+ ],
463
+ "url": "https://www.imgix.com/docs/reference/format#param-fm",
464
+ "short_description": "Specifies that the output image should be a lossless variant."
465
+ },
466
+ "mark": {
467
+ "display_name": "watermark image",
468
+ "category": "watermark",
469
+ "expects": "url",
470
+ "aliases": [
471
+ "m"
472
+ ],
473
+ "url": "https://www.imgix.com/docs/reference/watermark#param-mark",
474
+ "short_description": "Specifies the location of the watermark image."
475
+ },
476
+ "markalign": {
477
+ "display_name": "watermark alignment mode",
478
+ "category": "watermark",
479
+ "expects": "list",
480
+ "possible_values": [
481
+ "top",
482
+ "middle",
483
+ "bottom",
484
+ "left",
485
+ "center",
486
+ "right"
487
+ ],
488
+ "aliases": [
489
+ "ma"
490
+ ],
491
+ "depends": [
492
+ "mark"
493
+ ],
494
+ "url": "https://www.imgix.com/docs/reference/watermark#param-markalign",
495
+ "short_description": "Changes the watermark alignment relative to the parent image."
496
+ },
497
+ "markalpha": {
498
+ "display_name": "watermark alpha",
499
+ "category": "watermark",
500
+ "expects": "integer",
501
+ "default": 100,
502
+ "min": 0,
503
+ "max": 100,
504
+ "depends": [
505
+ "mark"
506
+ ],
507
+ "url": "https://www.imgix.com/docs/reference/watermark#param-markalpha",
508
+ "short_description": "Changes the alpha of the watermark image."
509
+ },
510
+ "markbase": {
511
+ "display_name": "watermark url base",
512
+ "category": "watermark",
513
+ "expects": "url",
514
+ "aliases": [
515
+ "mb"
516
+ ],
517
+ "depends": [
518
+ "mark"
519
+ ],
520
+ "short_description": "Changes base URL of the watermark image."
521
+ },
522
+ "markfit": {
523
+ "display_name": "watermark fit mode",
524
+ "category": "watermark",
525
+ "expects": "string",
526
+ "default": "clip",
527
+ "possible_values": [
528
+ "clip",
529
+ "crop",
530
+ "fill",
531
+ "max",
532
+ "scale"
533
+ ],
534
+ "aliases": [
535
+ "mf"
536
+ ],
537
+ "depends": [
538
+ "mark",
539
+ "markw",
540
+ "markh"
541
+ ],
542
+ "url": "https://www.imgix.com/docs/reference/watermark#param-markfit",
543
+ "short_description": "Specifies the fit mode for watermark images."
544
+ },
545
+ "markh": {
546
+ "display_name": "watermark height",
547
+ "category": "watermark",
548
+ "expects": [
549
+ "number",
550
+ "unit_scalar"
551
+ ],
552
+ "aliases": [
553
+ "mh"
554
+ ],
555
+ "depends": [
556
+ "mark"
557
+ ],
558
+ "url": "https://www.imgix.com/docs/reference/watermark#param-markh",
559
+ "short_description": "Adjusts the height of the watermark image."
560
+ },
561
+ "markpad": {
562
+ "display_name": "watermark padding",
563
+ "category": "watermark",
564
+ "expects": "number",
565
+ "default": 10,
566
+ "aliases": [
567
+ "mp"
568
+ ],
569
+ "depends": [
570
+ "mark"
571
+ ],
572
+ "url": "https://www.imgix.com/docs/reference/watermark#param-markpad",
573
+ "short_description": "Applies padding to the watermark image."
574
+ },
575
+ "markscale": {
576
+ "display_name": "watermark scale",
577
+ "category": "watermark",
578
+ "expects": "number",
579
+ "min": 0,
580
+ "max": 100,
581
+ "aliases": [
582
+ "ms"
583
+ ],
584
+ "depends": [
585
+ "mark"
586
+ ],
587
+ "url": "https://www.imgix.com/docs/reference/watermark#param-markscale",
588
+ "short_description": "Adjusts the scale of the watermark image."
589
+ },
590
+ "markw": {
591
+ "display_name": "watermark width",
592
+ "category": "watermark",
593
+ "expects": [
594
+ "number",
595
+ "unit_scalar"
596
+ ],
597
+ "aliases": [
598
+ "mw"
599
+ ],
600
+ "depends": [
601
+ "mark"
602
+ ],
603
+ "url": "https://www.imgix.com/docs/reference/watermark#param-markw",
604
+ "short_description": "Adjusts the width of the watermark image."
605
+ },
606
+ "markx": {
607
+ "display_name": "watermark x-position",
608
+ "category": "watermark",
609
+ "expects": "integer",
610
+ "aliases": [
611
+ "mx"
612
+ ],
613
+ "depends": [
614
+ "mark"
615
+ ],
616
+ "url": "https://www.imgix.com/docs/reference/watermark#param-markx",
617
+ "short_description": "Adjusts the x-offset of the watermark image relative to its parent."
618
+ },
619
+ "marky": {
620
+ "display_name": "watermark y-position",
621
+ "category": "watermark",
622
+ "expects": "integer",
623
+ "aliases": [
624
+ "my"
625
+ ],
626
+ "depends": [
627
+ "mark"
628
+ ],
629
+ "url": "https://www.imgix.com/docs/reference/watermark#param-marky",
630
+ "short_description": "Adjusts the y-offset of the watermark image relative to its parent."
631
+ },
632
+ "mask": {
633
+ "display_name": "mask",
634
+ "category": "mask",
635
+ "expects": [
636
+ "string",
637
+ "url"
638
+ ],
639
+ "possible_values": [
640
+ "ellipse"
641
+ ],
642
+ "url": "https://www.imgix.com/docs/reference/mask#param-mask",
643
+ "short_description": "Specifies the location of the mask image."
644
+ },
645
+ "mono": {
646
+ "display_name": "monochrome",
647
+ "category": "stylize",
648
+ "expects": "hex_color",
649
+ "aliases": [
650
+ "monochrome"
651
+ ],
652
+ "url": "https://www.imgix.com/docs/reference/stylize#param-mono",
653
+ "short_description": "Applies a monochrome effect to the source image."
654
+ },
655
+ "nr": {
656
+ "display_name": "noise blur",
657
+ "category": "noise",
658
+ "expects": "number",
659
+ "default": 20,
660
+ "min": -100,
661
+ "max": 100,
662
+ "url": "https://www.imgix.com/docs/reference/noise#param-nr",
663
+ "short_description": "Reduces the noise in an image."
664
+ },
665
+ "nrs": {
666
+ "display_name": "noise sharpen",
667
+ "category": "noise",
668
+ "expects": "number",
669
+ "default": 20,
670
+ "min": -100,
671
+ "max": 100,
672
+ "url": "https://www.imgix.com/docs/reference/noise#param-nrs",
673
+ "short_description": "Provides a threshold by which to sharpen an image."
674
+ },
675
+ "or": {
676
+ "display_name": "orientation",
677
+ "category": "rotation",
678
+ "expects": "integer",
679
+ "possible_values": [
680
+ 0,
681
+ 1,
682
+ 2,
683
+ 3,
684
+ 4,
685
+ 5,
686
+ 6,
687
+ 7,
688
+ 8,
689
+ 90,
690
+ 180,
691
+ 270
692
+ ],
693
+ "aliases": [
694
+ "orient"
695
+ ],
696
+ "url": "https://www.imgix.com/docs/reference/rotation#param-or",
697
+ "short_description": "Changes the image orientation."
698
+ },
699
+ "pad": {
700
+ "display_name": "padding",
701
+ "category": "border_and_padding",
702
+ "expects": "integer",
703
+ "default": 0,
704
+ "min": 0,
705
+ "url": "https://www.imgix.com/docs/reference/border-padding#param-pad",
706
+ "short_description": "Pads an image."
707
+ },
708
+ "page": {
709
+ "display_name": "pdf page number",
710
+ "category": "pdf",
711
+ "expects": "integer",
712
+ "default": 1,
713
+ "min": 1,
714
+ "url": "https://www.imgix.com/docs/reference/pdf#param-page",
715
+ "short_description": "Selects a page from a PDF for display."
716
+ },
717
+ "palette": {
718
+ "display_name": "palette extraction",
719
+ "category": "palette",
720
+ "expects": "string",
721
+ "possible_values": [
722
+ "css",
723
+ "json"
724
+ ],
725
+ "url": "https://www.imgix.com/docs/reference/palette#param-palette",
726
+ "short_description": "Specifies an output format for palette-extraction."
727
+ },
728
+ "prefix": {
729
+ "display_name": "css prefix",
730
+ "category": "palette",
731
+ "expects": "string",
732
+ "default": "image",
733
+ "depends": [
734
+ "palette=css"
735
+ ],
736
+ "url": "https://www.imgix.com/docs/reference/palette#param-prefix",
737
+ "short_description": "Specifies a CSS prefix for all classes in palette-extraction."
738
+ },
739
+ "px": {
740
+ "display_name": "pixellate",
741
+ "category": "stylize",
742
+ "expects": "number",
743
+ "default": 0,
744
+ "min": 0,
745
+ "max": 100,
746
+ "url": "https://www.imgix.com/docs/reference/stylize#param-px",
747
+ "short_description": "Applies a pixelation effect to an image."
748
+ },
749
+ "q": {
750
+ "display_name": "output quality",
751
+ "category": "format",
752
+ "expects": "number",
753
+ "default": 75,
754
+ "min": 0,
755
+ "max": 100,
756
+ "depends": [
757
+ "fm=jpg",
758
+ "fm=pjpg",
759
+ "fm=webp",
760
+ "fm=jxr"
761
+ ],
762
+ "url": "https://www.imgix.com/docs/reference/format#param-q",
763
+ "short_description": "Adjusts the quality of an output image."
764
+ },
765
+ "rect": {
766
+ "display_name": "crop rectangle",
767
+ "category": "size",
768
+ "expects": "rectangle",
769
+ "url": "https://www.imgix.com/docs/reference/size#param-rect",
770
+ "short_description": "Crops an image to a specified rectangle."
771
+ },
772
+ "rot": {
773
+ "display_name": "rotation angle",
774
+ "category": "rotation",
775
+ "expects": "number",
776
+ "default": 0,
777
+ "min": 0,
778
+ "max": 359,
779
+ "url": "https://www.imgix.com/docs/reference/rotation#param-rot",
780
+ "short_description": "Rotates an image by a specified number of degrees."
781
+ },
782
+ "sat": {
783
+ "display_name": "saturation",
784
+ "category": "adjustment",
785
+ "expects": "number",
786
+ "default": 0,
787
+ "min": -100,
788
+ "max": 100,
789
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-sat",
790
+ "short_description": "Adjusts the saturation of an image."
791
+ },
792
+ "sepia": {
793
+ "display_name": "sepia",
794
+ "category": "stylize",
795
+ "expects": "number",
796
+ "default": 0,
797
+ "min": 0,
798
+ "max": 100,
799
+ "url": "https://www.imgix.com/docs/reference/stylize#param-sepia",
800
+ "short_description": "Applies a sepia effect to an image."
801
+ },
802
+ "shad": {
803
+ "display_name": "shadow",
804
+ "category": "adjustment",
805
+ "expects": "number",
806
+ "default": 0,
807
+ "min": -100,
808
+ "max": 100,
809
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-shad",
810
+ "short_description": "Adjusts the highlights of the source image."
811
+ },
812
+ "sharp": {
813
+ "display_name": "sharpen",
814
+ "category": "adjustment",
815
+ "expects": "number",
816
+ "default": 0,
817
+ "min": 0,
818
+ "max": 100,
819
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-sharp",
820
+ "short_description": "Adjusts the sharpness of the source image."
821
+ },
822
+ "trim": {
823
+ "display_name": "trim mode",
824
+ "category": "trim",
825
+ "expects": "string",
826
+ "possible_values": [
827
+ "auto",
828
+ "color"
829
+ ],
830
+ "url": "https://www.imgix.com/docs/reference/trim#param-trim",
831
+ "short_description": "Trims the source image."
832
+ },
833
+ "trimcol": {
834
+ "display_name": "trim color",
835
+ "category": "trim",
836
+ "expects": "hex_color",
837
+ "depends": [
838
+ "trim=color"
839
+ ],
840
+ "url": "https://www.imgix.com/docs/reference/trim#param-trimcolor",
841
+ "short_description": "Specifies a trim color on a trim operation."
842
+ },
843
+ "trimmd": {
844
+ "display_name": "trim mean difference",
845
+ "category": "trim",
846
+ "expects": "number",
847
+ "default": 11,
848
+ "depends": [
849
+ "trim=auto"
850
+ ],
851
+ "url": "https://www.imgix.com/docs/reference/text#param-trimmd",
852
+ "short_description": "Specifies the mean difference on a trim operation."
853
+ },
854
+ "trimsd": {
855
+ "display_name": "trim standard deviation",
856
+ "category": "trim",
857
+ "expects": "number",
858
+ "default": 10,
859
+ "depends": [
860
+ "trim=auto"
861
+ ],
862
+ "url": "https://www.imgix.com/docs/reference/trim#param-trimsd",
863
+ "short_description": "Specifies the standard deviation on a trim operation."
864
+ },
865
+ "trimtol": {
866
+ "display_name": "trim tolerance",
867
+ "category": "trim",
868
+ "expects": "number",
869
+ "default": 0,
870
+ "min": 0,
871
+ "depends": [
872
+ "trim=color"
873
+ ],
874
+ "url": "https://www.imgix.com/docs/reference/trim#param-trimtol",
875
+ "short_description": "Specifies the tolerance on a trim operation."
876
+ },
877
+ "txt": {
878
+ "display_name": "text",
879
+ "category": "text",
880
+ "expects": "string",
881
+ "aliases": [
882
+ "t"
883
+ ],
884
+ "url": "https://www.imgix.com/docs/reference/text#param-txt",
885
+ "short_description": "Sets the text to render."
886
+ },
887
+ "txtalign": {
888
+ "display_name": "text align",
889
+ "category": "text",
890
+ "expects": "list",
891
+ "possible_values": [
892
+ "top",
893
+ "middle",
894
+ "bottom",
895
+ "left",
896
+ "center",
897
+ "right"
898
+ ],
899
+ "aliases": [
900
+ "ta"
901
+ ],
902
+ "depends": [
903
+ "txt"
904
+ ],
905
+ "url": "https://www.imgix.com/docs/reference/text#param-txtalign",
906
+ "short_description": "Sets the alignment of rendered text."
907
+ },
908
+ "txtclip": {
909
+ "display_name": "text clipping",
910
+ "category": "text",
911
+ "expects": "string",
912
+ "default": "end",
913
+ "possible_values": [
914
+ "start",
915
+ "middle",
916
+ "end"
917
+ ],
918
+ "depends": [
919
+ "txt"
920
+ ],
921
+ "url": "https://www.imgix.com/docs/reference/text#param-txtclip",
922
+ "short_description": "Sets the clipping properties of rendered text."
923
+ },
924
+ "txtclr": {
925
+ "display_name": "text color",
926
+ "category": "text",
927
+ "expects": "hex_color",
928
+ "aliases": [
929
+ "txtclr",
930
+ "tc"
931
+ ],
932
+ "depends": [
933
+ "txt"
934
+ ],
935
+ "url": "https://www.imgix.com/docs/reference/text#param-txtclr",
936
+ "short_description": "Specifies the color of rendered text"
937
+ },
938
+ "txtfit": {
939
+ "display_name": "text fit mode",
940
+ "category": "text",
941
+ "expects": "string",
942
+ "possible_values": [
943
+ "max"
944
+ ],
945
+ "depends": [
946
+ "txt"
947
+ ],
948
+ "url": "https://www.imgix.com/docs/reference/text#param-txtfit",
949
+ "short_description": "Specifies the fit approach for rendered text."
950
+ },
951
+ "txtfont": {
952
+ "display_name": "text font",
953
+ "category": "text",
954
+ "expects": "list",
955
+ "aliases": [
956
+ "tf"
957
+ ],
958
+ "depends": [
959
+ "txt"
960
+ ],
961
+ "url": "https://www.imgix.com/docs/reference/text#param-txtfont",
962
+ "short_description": "Selects a font for rendered text."
963
+ },
964
+ "txtline": {
965
+ "display_name": "text outline",
966
+ "category": "text",
967
+ "expects": "number",
968
+ "default": 0,
969
+ "min": 0,
970
+ "aliases": [
971
+ "tl"
972
+ ],
973
+ "depends": [
974
+ "txt"
975
+ ],
976
+ "url": "https://www.imgix.com/docs/reference/text#param-txtline",
977
+ "short_description": "Outlines the rendered text with a specified color."
978
+ },
979
+ "txtlineclr": {
980
+ "display_name": "text outline color",
981
+ "category": "text",
982
+ "expects": "hex_color",
983
+ "default": "FFF",
984
+ "depends": [
985
+ "txt",
986
+ "txtline"
987
+ ],
988
+ "url": "https://www.imgix.com/docs/reference/text#param-txtlineclr",
989
+ "short_description": "Specifies a text outline color."
990
+ },
991
+ "txtpad": {
992
+ "display_name": "text padding",
993
+ "category": "text",
994
+ "expects": "number",
995
+ "default": 10,
996
+ "aliases": [
997
+ "tp"
998
+ ],
999
+ "depends": [
1000
+ "txt"
1001
+ ],
1002
+ "url": "https://www.imgix.com/docs/reference/text#param-txtpad",
1003
+ "short_description": "Specifies padding for rendered text."
1004
+ },
1005
+ "txtshad": {
1006
+ "display_name": "text shadow",
1007
+ "category": "text",
1008
+ "expects": "number",
1009
+ "default": 0,
1010
+ "aliases": [
1011
+ "tsh"
1012
+ ],
1013
+ "depends": [
1014
+ "txt"
1015
+ ],
1016
+ "url": "https://www.imgix.com/docs/reference/text#param-txtshad",
1017
+ "short_description": "Applies a shadow to rendered text."
1018
+ },
1019
+ "txtsize": {
1020
+ "display_name": "text font size",
1021
+ "category": "text",
1022
+ "expects": "number",
1023
+ "default": 12,
1024
+ "min": 0,
1025
+ "aliases": [
1026
+ "tsz"
1027
+ ],
1028
+ "depends": [
1029
+ "txt"
1030
+ ],
1031
+ "url": "https://www.imgix.com/docs/reference/text#param-txtsize",
1032
+ "short_description": "Sets the size of rendered text."
1033
+ },
1034
+ "txtwidth": {
1035
+ "display_name": "text width",
1036
+ "category": "text",
1037
+ "expects": "number",
1038
+ "min": 0,
1039
+ "depends": [
1040
+ "txt"
1041
+ ],
1042
+ "url": "https://www.imgix.com/docs/reference/text#param-txtwidth",
1043
+ "short_description": "Sets the width of rendered text."
1044
+ },
1045
+ "usm": {
1046
+ "display_name": "unsharp mask",
1047
+ "category": "adjustment",
1048
+ "expects": "number",
1049
+ "default": 0,
1050
+ "min": -100,
1051
+ "max": 100,
1052
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-usm",
1053
+ "short_description": "Sharpens the source image using an unsharp mask."
1054
+ },
1055
+ "usmrad": {
1056
+ "display_name": "unsharp mask radius",
1057
+ "category": "adjustment",
1058
+ "expects": "number",
1059
+ "default": 2.5,
1060
+ "min": 0,
1061
+ "depends": [
1062
+ "usm"
1063
+ ],
1064
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-usmrad",
1065
+ "short_description": "Specifies the radius for an unsharp mask operation."
1066
+ },
1067
+ "vib": {
1068
+ "display_name": "vibrance",
1069
+ "category": "adjustment",
1070
+ "expects": "number",
1071
+ "default": 0,
1072
+ "min": -100,
1073
+ "max": 100,
1074
+ "url": "https://www.imgix.com/docs/reference/adjustment#param-vib",
1075
+ "short_description": "Adjusts the vibrance an image."
1076
+ },
1077
+ "w": {
1078
+ "display_name": "width",
1079
+ "category": "size",
1080
+ "expects": [
1081
+ "number",
1082
+ "unit_scalar"
1083
+ ],
1084
+ "url": "https://www.imgix.com/docs/reference/size#param-w",
1085
+ "short_description": "Adjusts the width of the output image."
1086
+ }
1087
+ },
1088
+ "deprecatedParameters": {
1089
+ "class": {
1090
+ "display_name": "css class",
1091
+ "category": "palette",
1092
+ "expects": "string",
1093
+ "deprecated": true,
1094
+ "url": "https://www.imgix.com/docs/reference/palette#param-colors",
1095
+ "short_description": "Specifies the CSS class to use for palette extraction."
1096
+ }
1097
+ },
1098
+ "experimentalParameters": {
1099
+ "rott": {
1100
+ "display_name": "rotation type",
1101
+ "category": "rotation",
1102
+ "expects": "string",
1103
+ "possible_values": [
1104
+ "pivot",
1105
+ "straighten"
1106
+ ],
1107
+ "experimental": true,
1108
+ "short_description": "Changes the rotation type."
1109
+ },
1110
+ "skin": {
1111
+ "display_name": "skin detection",
1112
+ "category": "misc",
1113
+ "expects": "string",
1114
+ "possible_values": [
1115
+ "map"
1116
+ ],
1117
+ "experimental": true,
1118
+ "deprectated": true
1119
+ }
1120
+ },
1121
+ "aliases": {
1122
+ "f": "fit",
1123
+ "m": "mark",
1124
+ "ma": "markalign",
1125
+ "mb": "markbase",
1126
+ "mf": "markfit",
1127
+ "mh": "markh",
1128
+ "mp": "markpad",
1129
+ "ms": "markscale",
1130
+ "mw": "markw",
1131
+ "mx": "markx",
1132
+ "my": "marky",
1133
+ "monochrome": "mono",
1134
+ "orient": "or",
1135
+ "t": "txt",
1136
+ "ta": "txtalign",
1137
+ "txtclr": "txtclr",
1138
+ "tc": "txtclr",
1139
+ "tf": "txtfont",
1140
+ "tl": "txtline",
1141
+ "tp": "txtpad",
1142
+ "tsh": "txtshad",
1143
+ "tsz": "txtsize"
1144
+ }
1145
+ }