imgix-rails 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+ }