imgproxy 2.1.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +8 -0
- data/CHANGELOG.md +74 -0
- data/README.md +176 -135
- data/UPGRADE.md +136 -0
- data/docs/info_options.md +223 -0
- data/docs/processing_options.md +724 -0
- data/docs/yard/fix_pictures.rb +25 -0
- data/docs/yard/github_alerts.rb +16 -0
- data/docs/yard/relative_markdown_links.rb +31 -0
- data/lib/imgproxy/config.rb +96 -41
- data/lib/imgproxy/extensions/active_storage.rb +6 -4
- data/lib/imgproxy/extensions/shrine.rb +6 -4
- data/lib/imgproxy/option_aliases/info.rb +33 -0
- data/lib/imgproxy/option_aliases/processing.rb +74 -0
- data/lib/imgproxy/options_builders/base.rb +54 -0
- data/lib/imgproxy/options_builders/info.rb +52 -0
- data/lib/imgproxy/options_builders/processing.rb +150 -0
- data/lib/imgproxy/options_casters/adjust.rb +3 -1
- data/lib/imgproxy/options_casters/alpha.rb +27 -0
- data/lib/imgproxy/options_casters/array.rb +3 -1
- data/lib/imgproxy/options_casters/autoquality.rb +28 -0
- data/lib/imgproxy/options_casters/average.rb +27 -0
- data/lib/imgproxy/options_casters/background.rb +27 -0
- data/lib/imgproxy/options_casters/base64.rb +2 -0
- data/lib/imgproxy/options_casters/blur_detections.rb +28 -0
- data/lib/imgproxy/options_casters/blurhash.rb +21 -0
- data/lib/imgproxy/options_casters/bool.rb +3 -1
- data/lib/imgproxy/options_casters/crop.rb +3 -1
- data/lib/imgproxy/options_casters/dominant_colors.rb +27 -0
- data/lib/imgproxy/options_casters/draw_detections.rb +28 -0
- data/lib/imgproxy/options_casters/extend.rb +3 -1
- data/lib/imgproxy/options_casters/filename.rb +31 -0
- data/lib/imgproxy/options_casters/float.rb +3 -1
- data/lib/imgproxy/options_casters/format_quality.rb +19 -0
- data/lib/imgproxy/options_casters/gradient.rb +31 -0
- data/lib/imgproxy/options_casters/gravity.rb +20 -6
- data/lib/imgproxy/options_casters/group.rb +2 -0
- data/lib/imgproxy/options_casters/hashsum.rb +24 -0
- data/lib/imgproxy/options_casters/integer.rb +2 -0
- data/lib/imgproxy/options_casters/jpeg_options.rb +3 -1
- data/lib/imgproxy/options_casters/padding.rb +41 -0
- data/lib/imgproxy/options_casters/png_options.rb +3 -1
- data/lib/imgproxy/options_casters/resize.rb +3 -1
- data/lib/imgproxy/options_casters/size.rb +3 -1
- data/lib/imgproxy/options_casters/string.rb +2 -0
- data/lib/imgproxy/options_casters/trim.rb +3 -1
- data/lib/imgproxy/options_casters/unsharp_masking.rb +25 -0
- data/lib/imgproxy/options_casters/video_thumbnail_tile.rb +34 -0
- data/lib/imgproxy/options_casters/watermark.rb +5 -4
- data/lib/imgproxy/options_casters/watermark_size.rb +21 -0
- data/lib/imgproxy/options_casters/{gif_options.rb → webp_options.rb} +6 -5
- data/lib/imgproxy/options_casters/zoom.rb +27 -0
- data/lib/imgproxy/service_config.rb +111 -0
- data/lib/imgproxy/trim_array.rb +2 -0
- data/lib/imgproxy/url_adapters/active_storage.rb +2 -0
- data/lib/imgproxy/url_adapters/shrine.rb +8 -2
- data/lib/imgproxy/url_adapters.rb +3 -0
- data/lib/imgproxy/url_builders/base.rb +184 -0
- data/lib/imgproxy/url_builders/info.rb +44 -0
- data/lib/imgproxy/url_builders/processing.rb +59 -0
- data/lib/imgproxy/version.rb +3 -1
- data/lib/imgproxy.rb +19 -57
- data/logo/logo-dark.svg +22 -0
- data/logo/logo-light.svg +31 -0
- metadata +70 -32
- data/lib/imgproxy/builder.rb +0 -140
- data/lib/imgproxy/options.rb +0 -119
- data/lib/imgproxy/options_aliases.rb +0 -45
data/UPGRADE.md
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
<!--
|
2
|
+
# @title Upgrading imgproxy.rb
|
3
|
+
-->
|
4
|
+
|
5
|
+
# Upgrading imgproxy.rb
|
6
|
+
|
7
|
+
## Upgrading 2.x to 3.x
|
8
|
+
|
9
|
+
Version 3.0 brings a single breaking change and a single deprecation:
|
10
|
+
|
11
|
+
* `Imgproxy::Builder` class was replaced with `Imgproxy::UrlBuilders::Processing`. If you don't use URL builders directly, you are not affected by this change. Otherwise, just replace the old class with the new one:
|
12
|
+
|
13
|
+
**Was:**
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
builder = Imgproxy::Builder.new(
|
17
|
+
width: 500,
|
18
|
+
height: 400,
|
19
|
+
resizing_type: :fill,
|
20
|
+
sharpen: 0.5
|
21
|
+
)
|
22
|
+
```
|
23
|
+
|
24
|
+
**Becomes:**
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
builder = Imgproxy::UrlBuilders::Processing.new(
|
28
|
+
width: 500,
|
29
|
+
height: 400,
|
30
|
+
resizing_type: :fill,
|
31
|
+
sharpen: 0.5
|
32
|
+
)
|
33
|
+
```
|
34
|
+
|
35
|
+
* The `unsharpening` processing option was deprecated, use the `unsharp_masking` option.
|
36
|
+
|
37
|
+
## Upgrading 1.x to 2.x
|
38
|
+
|
39
|
+
Version 2.0 brings several breaking changes. Here are some things you need to know to safely upgrade from version 1.x to 2.0.
|
40
|
+
|
41
|
+
* If you use `key` and `salt` config options to provide raw (not hex-encoded) key/salt pair, use `raw_key` and `raw_salt` instead.
|
42
|
+
|
43
|
+
**Was:**
|
44
|
+
|
45
|
+
```ruby
|
46
|
+
Imgproxy.configure do |config|
|
47
|
+
config.key = "your_raw_key"
|
48
|
+
config.salt = "your_raw_salt"
|
49
|
+
end
|
50
|
+
```
|
51
|
+
|
52
|
+
**Becomes:**
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
Imgproxy.configure do |config|
|
56
|
+
config.raw_key = "your_raw_key"
|
57
|
+
config.raw_salt = "your_raw_salt"
|
58
|
+
end
|
59
|
+
```
|
60
|
+
|
61
|
+
* If you use `hex_key` and `hex_salt` config options to provide hex-encoded key/salt pair, use `key` and `salt` instead.
|
62
|
+
|
63
|
+
**Was:**
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
Imgproxy.configure do |config|
|
67
|
+
config.hex_key = "your_key"
|
68
|
+
config.hex_salt = "your_salt"
|
69
|
+
end
|
70
|
+
```
|
71
|
+
|
72
|
+
**Becomes:**
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
Imgproxy.configure do |config|
|
76
|
+
config.key = "your_key"
|
77
|
+
config.salt = "your_salt"
|
78
|
+
end
|
79
|
+
```
|
80
|
+
|
81
|
+
* If you use complex processing options with multiple arguments like `crop`, `gravity`, `watermark`, etc, rewrite their usage according to the [Complex processing options](README.md#complex-processing-options) chapter in the gem's documentation.
|
82
|
+
|
83
|
+
**Was:**
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
Imgproxy.url_for(
|
87
|
+
image_url,
|
88
|
+
crop_width: 500,
|
89
|
+
crop_height: 600,
|
90
|
+
crop_gravity: :nowe,
|
91
|
+
watermark_opacity: 0.5,
|
92
|
+
watermark_scale: 0.3
|
93
|
+
)
|
94
|
+
```
|
95
|
+
|
96
|
+
**Becomes:**
|
97
|
+
|
98
|
+
```ruby
|
99
|
+
Imgproxy.url_for(
|
100
|
+
image_url,
|
101
|
+
crop: { width: 500, height: 600, gravity: { type: :nowe } },
|
102
|
+
watermark: { opacity: 0.5, scale: 0.3 }
|
103
|
+
)
|
104
|
+
```
|
105
|
+
|
106
|
+
* If you use integration with Active Storage, put `gem "imgproxy"` after `gem "rails"` in your `Gemfile` and remove `Imgproxy.extend_active_storage!` from your initializer. Active Storage support is enabled automatically since the version 2.0.
|
107
|
+
|
108
|
+
* If you use integration with Shrine, put `gem "imgproxy"` after `gem "shrine"` in your `Gemfile` and remove `Imgproxy.extend_shrine!` from your initializer. Shrine support is enabled automatically since the version 2.0.
|
109
|
+
|
110
|
+
* If you use additional options for the Active Storage or Shrine integrations, move them to centralized config under `Imgproxy.configure`.
|
111
|
+
|
112
|
+
**Was:**
|
113
|
+
|
114
|
+
```ruby
|
115
|
+
Imgproxy.extend_active_storage!(
|
116
|
+
use_s3: true,
|
117
|
+
use_gcs: true,
|
118
|
+
gcs_bucket: "my_bucket"
|
119
|
+
)
|
120
|
+
|
121
|
+
Imgproxy.extend_shrine!(
|
122
|
+
host: "http://your-host.test",
|
123
|
+
use_s3: true
|
124
|
+
)
|
125
|
+
```
|
126
|
+
|
127
|
+
**Becomes:**
|
128
|
+
|
129
|
+
```ruby
|
130
|
+
Imgproxy.configure do |config|
|
131
|
+
config.use_s3_urls = true
|
132
|
+
config.use_gcs_urls = true
|
133
|
+
config.gcs_bucket = "my_bucket"
|
134
|
+
config.shrine_host = "http://your-host.test"
|
135
|
+
end
|
136
|
+
```
|
@@ -0,0 +1,223 @@
|
|
1
|
+
<!--
|
2
|
+
# @title Supported info options
|
3
|
+
-->
|
4
|
+
# Supported info options
|
5
|
+
|
6
|
+
### [size](https://docs.imgproxy.net/usage/getting_info#size)
|
7
|
+
|
8
|
+
```ruby
|
9
|
+
{
|
10
|
+
size: true || false
|
11
|
+
}
|
12
|
+
```
|
13
|
+
|
14
|
+
### [format](https://docs.imgproxy.net/usage/getting_info#format)
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
{
|
18
|
+
format: true || false
|
19
|
+
}
|
20
|
+
```
|
21
|
+
|
22
|
+
### [dimensions](https://docs.imgproxy.net/usage/getting_info#dimensions)
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
{
|
26
|
+
dimensions: true || false
|
27
|
+
}
|
28
|
+
```
|
29
|
+
|
30
|
+
### [video_meta](https://docs.imgproxy.net/usage/getting_info#video-meta)
|
31
|
+
|
32
|
+
```ruby
|
33
|
+
{
|
34
|
+
video_meta: true || false
|
35
|
+
}
|
36
|
+
```
|
37
|
+
|
38
|
+
### [detect_objects](https://docs.imgproxy.net/usage/getting_info#detect-objects)
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
{
|
42
|
+
detect_objects: true || false
|
43
|
+
}
|
44
|
+
```
|
45
|
+
|
46
|
+
### [colorspace](https://docs.imgproxy.net/usage/getting_info#colorspace)
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
{
|
50
|
+
colorspace: true || false
|
51
|
+
}
|
52
|
+
```
|
53
|
+
|
54
|
+
### [bands](https://docs.imgproxy.net/usage/getting_info#bands)
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
{
|
58
|
+
bands: true || false
|
59
|
+
}
|
60
|
+
```
|
61
|
+
|
62
|
+
### [sample_format](https://docs.imgproxy.net/usage/getting_info#sample-format)
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
{
|
66
|
+
sample_format: true || false
|
67
|
+
}
|
68
|
+
```
|
69
|
+
|
70
|
+
### [pages_number](https://docs.imgproxy.net/usage/getting_info#pages-number)
|
71
|
+
|
72
|
+
```ruby
|
73
|
+
{
|
74
|
+
pages_number: true || false
|
75
|
+
}
|
76
|
+
```
|
77
|
+
|
78
|
+
### [alpha](https://docs.imgproxy.net/usage/getting_info#alpha)
|
79
|
+
|
80
|
+
```ruby
|
81
|
+
{
|
82
|
+
alpha: {
|
83
|
+
alpha: true || false,
|
84
|
+
check_transparency: true || false,
|
85
|
+
}
|
86
|
+
}
|
87
|
+
```
|
88
|
+
|
89
|
+
### [crop](https://docs.imgproxy.net/usage/getting_info#crop)
|
90
|
+
|
91
|
+
```ruby
|
92
|
+
{
|
93
|
+
crop: {
|
94
|
+
width: Float,
|
95
|
+
height: Float,
|
96
|
+
gravity: gravity, # See the 'gravity' processing option
|
97
|
+
}
|
98
|
+
}
|
99
|
+
```
|
100
|
+
|
101
|
+
### [palette](https://docs.imgproxy.net/usage/getting_info#palette)
|
102
|
+
|
103
|
+
```ruby
|
104
|
+
{
|
105
|
+
palette: Integer
|
106
|
+
}
|
107
|
+
```
|
108
|
+
|
109
|
+
### [average](https://docs.imgproxy.net/usage/getting_info#average)
|
110
|
+
|
111
|
+
```ruby
|
112
|
+
{
|
113
|
+
average: {
|
114
|
+
average: true || false,
|
115
|
+
ignore_transparent: true || false,
|
116
|
+
}
|
117
|
+
}
|
118
|
+
```
|
119
|
+
|
120
|
+
### [dominant_colors](https://docs.imgproxy.net/usage/getting_info#dominant_colors)
|
121
|
+
|
122
|
+
```ruby
|
123
|
+
{
|
124
|
+
dominant_colors: {
|
125
|
+
dominant_colors: true || false,
|
126
|
+
build_missed: true || false,
|
127
|
+
}
|
128
|
+
}
|
129
|
+
```
|
130
|
+
|
131
|
+
### [blurhash](https://docs.imgproxy.net/usage/getting_info#blurhash)
|
132
|
+
|
133
|
+
```ruby
|
134
|
+
{
|
135
|
+
blurhash: {
|
136
|
+
x_components: Integer,
|
137
|
+
y_components: Integer,
|
138
|
+
}
|
139
|
+
}
|
140
|
+
```
|
141
|
+
|
142
|
+
### [calc_hashsum](https://docs.imgproxy.net/usage/getting_info#calc_hashsum)
|
143
|
+
|
144
|
+
```ruby
|
145
|
+
{
|
146
|
+
calc_hashsum: Array[String || Symbol]
|
147
|
+
}
|
148
|
+
```
|
149
|
+
|
150
|
+
### [page](https://docs.imgproxy.net/usage/getting_info#page)
|
151
|
+
|
152
|
+
```ruby
|
153
|
+
{
|
154
|
+
page: Integer
|
155
|
+
}
|
156
|
+
```
|
157
|
+
|
158
|
+
### [video_thumbnail_second](https://docs.imgproxy.net/usage/getting_info#video_thumbnail_second)
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
{
|
162
|
+
video_thumbnail_second: Float
|
163
|
+
}
|
164
|
+
```
|
165
|
+
|
166
|
+
### [video_thumbnail_keyframes](https://docs.imgproxy.net/usage/getting_info#video_thumbnail_keyframes)
|
167
|
+
|
168
|
+
```ruby
|
169
|
+
{
|
170
|
+
video_thumbnail_keyframes: true || false
|
171
|
+
}
|
172
|
+
```
|
173
|
+
|
174
|
+
### [cachebuster](https://docs.imgproxy.net/usage/getting_info#cachebuster)
|
175
|
+
|
176
|
+
```ruby
|
177
|
+
{
|
178
|
+
cachebuster: String || Symbol
|
179
|
+
}
|
180
|
+
```
|
181
|
+
|
182
|
+
### [expires](https://docs.imgproxy.net/usage/getting_info#expires)
|
183
|
+
|
184
|
+
```ruby
|
185
|
+
{
|
186
|
+
expires: Integer || Time,
|
187
|
+
}
|
188
|
+
```
|
189
|
+
|
190
|
+
### [preset](https://docs.imgproxy.net/usage/getting_info#preset)
|
191
|
+
|
192
|
+
```ruby
|
193
|
+
{
|
194
|
+
preset: Array[String || Symbol]
|
195
|
+
}
|
196
|
+
```
|
197
|
+
|
198
|
+
### [hashsum](https://docs.imgproxy.net/usage/getting_info#hashsum)
|
199
|
+
|
200
|
+
```ruby
|
201
|
+
{
|
202
|
+
hashsum: {
|
203
|
+
hashsum_type: Array[String || Symbol]
|
204
|
+
hashsum: String,
|
205
|
+
}
|
206
|
+
}
|
207
|
+
```
|
208
|
+
|
209
|
+
### [max_src_resolution](https://docs.imgproxy.net/usage/getting_info#max_src_resolution)
|
210
|
+
|
211
|
+
```ruby
|
212
|
+
{
|
213
|
+
max_src_resolution: Float
|
214
|
+
}
|
215
|
+
```
|
216
|
+
|
217
|
+
### [max_src_file_size](https://docs.imgproxy.net/usage/getting_info#max_src_file_size)
|
218
|
+
|
219
|
+
```ruby
|
220
|
+
{
|
221
|
+
max_src_file_size: Integer
|
222
|
+
}
|
223
|
+
```
|