easyimg_utils 0.4.2 → 0.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/easyimg_utils.rb +194 -96
- metadata +61 -41
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 747675b404e492bb0c25b254a1e3ec332de6a9d52bd85f32b19849388e579b34
|
4
|
+
data.tar.gz: eabc7fd2465441173854d524071d38d295eb390d9b1fe8b0032c93aaec67095e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8c02de630ce978236b4e8461be3f980f85960447579961db87f2e74b85304f9861def010c03e42d9049e759cf9ad752a40d58c6fa40ca1f8f701f92a57a8bb8f
|
7
|
+
data.tar.gz: 856e1609c06583611f9a5cb98e31de21395b8d67586cf20f6439fe9ed603849f3a3808c5d0bf4e9d8f7f0ebd3396fddbc93598d97e26562cd111c3efe96d7f95
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/easyimg_utils.rb
CHANGED
@@ -3,9 +3,10 @@
|
|
3
3
|
# file: easyimg_utils.rb
|
4
4
|
|
5
5
|
require 'c32'
|
6
|
-
require '
|
6
|
+
require 'x4ss'
|
7
7
|
require 'rmagick'
|
8
8
|
require 'webp_ffi'
|
9
|
+
require 'rxfhelper'
|
9
10
|
|
10
11
|
# requirements:
|
11
12
|
#
|
@@ -51,6 +52,7 @@ class EasyImgUtils
|
|
51
52
|
* add rectangle # usage: add_rectangle(color: 'green', x1: 12, y1: 12, x2: 24, y2: 24)
|
52
53
|
* add_svg # adds an SVG transparency overlay. usage: add_svg('/tmp/image1.svg')
|
53
54
|
* add_text # e.g. add_text('some text')
|
55
|
+
* animate Creates an animated gif e.g. animate('/tmp/a%d.png', '/tmp/b.gif')
|
54
56
|
* blur # e.g. blur(x: 231, y: 123, w: 85, h: 85)
|
55
57
|
* capture_screen # takes a screenshot of the desktop
|
56
58
|
* center_crop # crops from the centre of an image. Usage center_crop(width, height)
|
@@ -62,11 +64,13 @@ class EasyImgUtils
|
|
62
64
|
* greyscale # Reduces the image to 256 shades of grey
|
63
65
|
* info # returns the dimension of the image in a Hash object
|
64
66
|
* make_thumbnail # similar to resize but faster for sizes less than 10% of original image
|
65
|
-
* resize # set the maximum geomertry of the image for resizing e.g. resize('320x240')
|
67
|
+
* resize # set the maximum geomertry of the image for resizing e.g. resize('320x240') see also scale
|
66
68
|
* rotate
|
67
69
|
* rotate_180
|
68
70
|
* rotate_left
|
69
71
|
* rotate_right
|
72
|
+
* scale # Scales an image by the given factor e.g. 0.75 is 75%. see also resize
|
73
|
+
* screencast # records a screencast and saves it as animated gif. e.g. (out: '/tmp/fun.gif').screencast
|
70
74
|
* sketch # renders an artistic sketch, ideal with simplistic photos
|
71
75
|
* view # view the output
|
72
76
|
* vignette # Feathers the edge of an image in a circular path
|
@@ -85,14 +89,15 @@ class EasyImgUtils
|
|
85
89
|
x1: 0, y1: 0, x2: 0, y2: 0)
|
86
90
|
|
87
91
|
x1, y1, x2, y2 = *a if a
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
92
|
+
read() do |img|
|
93
|
+
gc = Magick::Draw.new
|
94
|
+
gc.stroke('green')
|
95
|
+
gc.stroke_width(5)
|
96
|
+
gc.fill('transparent')
|
97
|
+
gc.rectangle(x1, y1, x2, y2)
|
98
|
+
gc.draw(img)
|
99
|
+
write img, quality
|
100
|
+
end
|
96
101
|
|
97
102
|
end
|
98
103
|
|
@@ -112,38 +117,56 @@ class EasyImgUtils
|
|
112
117
|
|
113
118
|
def add_text(s='your text goes here', quality: nil)
|
114
119
|
|
115
|
-
|
120
|
+
read() do |img|
|
116
121
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
122
|
+
d = Draw.new
|
123
|
+
img.annotate(d, 0,0,0,0, s) do
|
124
|
+
d.gravity = Magick::SouthGravity
|
125
|
+
d.pointsize = 26
|
126
|
+
d.stroke = '#000000'
|
127
|
+
d.fill = '#ffffff'
|
128
|
+
d.font_weight = Magick::BoldWeight
|
129
|
+
end
|
130
|
+
|
131
|
+
write img, quality
|
132
|
+
|
124
133
|
end
|
125
134
|
|
126
|
-
write img, quality
|
127
|
-
|
128
135
|
end
|
129
136
|
|
137
|
+
def animate()
|
138
|
+
|
139
|
+
anim = Magick::ImageList.new
|
140
|
+
|
141
|
+
read() {|img| anim << img }
|
142
|
+
anim.ticks_per_second = 100
|
143
|
+
anim.delay = 20
|
144
|
+
|
145
|
+
@file_out ? anim.write(@file_out) : anim.animate
|
146
|
+
|
147
|
+
end
|
130
148
|
|
131
149
|
def blur(x: 0, y: 0, w: 80, h: 80, strength: 8, quality: nil)
|
132
150
|
|
133
151
|
width, height = w, h
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
152
|
+
|
153
|
+
read() do |img|
|
154
|
+
|
155
|
+
region = img.dispatch(x, y, width, height, 'RGB')
|
156
|
+
face_img = Magick::Image.constitute(width, height, "RGB", region)
|
157
|
+
img.composite!(face_img.gaussian_blur(0, strength), x, y,
|
158
|
+
Magick::OverCompositeOp)
|
159
|
+
write img, quality
|
160
|
+
|
161
|
+
end
|
140
162
|
|
141
163
|
end
|
142
164
|
|
143
165
|
def brightness(quality: nil)
|
144
|
-
|
145
|
-
|
146
|
-
|
166
|
+
read() do |img|
|
167
|
+
img2 = imglevel(-Magick::QuantumRange * 0.25, Magick::QuantumRange * 1.25, 1.0)
|
168
|
+
write img2, quality
|
169
|
+
end
|
147
170
|
end
|
148
171
|
|
149
172
|
def capture_screen(quality: nil)
|
@@ -162,9 +185,10 @@ class EasyImgUtils
|
|
162
185
|
|
163
186
|
return unless w
|
164
187
|
|
165
|
-
|
166
|
-
|
167
|
-
|
188
|
+
read() do |img|
|
189
|
+
img.crop!(CenterGravity, width, height)
|
190
|
+
write img, quality
|
191
|
+
end
|
168
192
|
|
169
193
|
end
|
170
194
|
|
@@ -172,18 +196,19 @@ class EasyImgUtils
|
|
172
196
|
|
173
197
|
return unless filex
|
174
198
|
|
175
|
-
|
199
|
+
read() do |img|
|
176
200
|
|
177
|
-
|
201
|
+
imgx = Magick::ImageList.new(filex)
|
178
202
|
|
179
|
-
|
180
|
-
|
203
|
+
# Change the white pixels in the sign to transparent.
|
204
|
+
imgx = imgx.matte_replace(0,0)
|
181
205
|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
206
|
+
img2 = Magick::Draw.new
|
207
|
+
img2.composite(x, y, 0, 0, imgx)
|
208
|
+
img2.draw(img)
|
209
|
+
|
210
|
+
write img, quality
|
211
|
+
end
|
187
212
|
|
188
213
|
end
|
189
214
|
|
@@ -199,13 +224,14 @@ class EasyImgUtils
|
|
199
224
|
|
200
225
|
return if level == neutral
|
201
226
|
|
202
|
-
|
227
|
+
read() do |img|
|
203
228
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
229
|
+
n = neutral - level
|
230
|
+
sharpen = n > 0
|
231
|
+
n.abs.times { img = img.contrast(sharpen) }
|
232
|
+
|
233
|
+
write img, quality
|
234
|
+
end
|
209
235
|
|
210
236
|
end
|
211
237
|
|
@@ -240,28 +266,31 @@ class EasyImgUtils
|
|
240
266
|
|
241
267
|
return unless w
|
242
268
|
|
243
|
-
|
244
|
-
|
245
|
-
|
269
|
+
read() do |img|
|
270
|
+
img.crop!(x,y, width=w, height=h)
|
271
|
+
write img, quality
|
272
|
+
end
|
246
273
|
|
247
274
|
end
|
248
275
|
|
249
276
|
def fax_effect(threshold: 0.55, quality: nil)
|
250
277
|
|
251
|
-
|
252
|
-
|
253
|
-
# Use a threshold of 55% of MaxRGB.
|
254
|
-
img = img.threshold(Magick::MaxRGB*threshold)
|
278
|
+
read() do |img|
|
255
279
|
|
256
|
-
|
280
|
+
# Use a threshold of 55% of MaxRGB.
|
281
|
+
img = img.threshold(Magick::MaxRGB*threshold)
|
282
|
+
write img, quality
|
283
|
+
|
284
|
+
end
|
257
285
|
|
258
286
|
end
|
259
287
|
|
260
288
|
def greyscale(quality: nil)
|
261
289
|
|
262
|
-
|
263
|
-
|
264
|
-
|
290
|
+
read() do |img|
|
291
|
+
img2 = img.quantize(256, GRAYColorspace)
|
292
|
+
write img2, quality
|
293
|
+
end
|
265
294
|
|
266
295
|
end
|
267
296
|
|
@@ -281,9 +310,10 @@ class EasyImgUtils
|
|
281
310
|
|
282
311
|
def make_thumbnail(width=125, height=125)
|
283
312
|
|
284
|
-
|
285
|
-
|
286
|
-
|
313
|
+
read() do |img|
|
314
|
+
img2 = img.thumbnail(width, height)
|
315
|
+
write img2, quality
|
316
|
+
end
|
287
317
|
|
288
318
|
end
|
289
319
|
|
@@ -293,63 +323,101 @@ class EasyImgUtils
|
|
293
323
|
#
|
294
324
|
def resize(geometry='320x240', quality: nil)
|
295
325
|
|
296
|
-
|
326
|
+
read() do |preview|
|
297
327
|
|
298
|
-
|
299
|
-
|
328
|
+
preview.change_geometry!(geometry) do |cols, rows, img|
|
329
|
+
img.resize!(cols, rows)
|
330
|
+
end
|
331
|
+
|
332
|
+
write preview, quality
|
300
333
|
end
|
301
334
|
|
302
|
-
write preview, quality
|
303
|
-
|
304
335
|
end
|
305
336
|
|
306
337
|
def rotate(degrees)
|
307
338
|
|
308
|
-
|
309
|
-
|
310
|
-
|
339
|
+
read() do |img|
|
340
|
+
img2 = img.rotate(degrees.to_i)
|
341
|
+
write img2, quality
|
342
|
+
end
|
311
343
|
|
312
344
|
end
|
313
345
|
|
314
346
|
def rotate_180()
|
315
347
|
|
316
|
-
|
317
|
-
|
318
|
-
|
348
|
+
read() do |img|
|
349
|
+
img2 = img.rotate(180)
|
350
|
+
write img2, quality
|
351
|
+
end
|
319
352
|
|
320
353
|
end
|
321
354
|
|
322
355
|
def rotate_left()
|
323
356
|
|
324
|
-
|
325
|
-
|
326
|
-
|
357
|
+
read() do |img|
|
358
|
+
img2 = img.rotate(-45)
|
359
|
+
write img2, quality
|
360
|
+
end
|
327
361
|
|
328
362
|
end
|
329
363
|
|
330
364
|
def rotate_right()
|
331
365
|
|
332
|
-
|
333
|
-
|
334
|
-
|
366
|
+
read() do |img|
|
367
|
+
img2 = img.rotate(45)
|
368
|
+
write img2, quality
|
369
|
+
end
|
335
370
|
|
336
371
|
end
|
372
|
+
|
373
|
+
# Scales an image by the given factor e.g. 0.75 is 75%
|
374
|
+
#
|
375
|
+
def scale(factor=0.75, quality: nil)
|
376
|
+
|
377
|
+
read() do |img|
|
378
|
+
|
379
|
+
img2 = img.scale(factor)
|
380
|
+
write img2, quality
|
381
|
+
|
382
|
+
end
|
383
|
+
|
384
|
+
end
|
385
|
+
|
386
|
+
# Takes a screenshot every second to create an animated gif
|
387
|
+
#
|
388
|
+
def screencast(duration: 6, scale: 1, window: true)
|
389
|
+
|
390
|
+
fileout = @file_out.sub(/\.\w+$/,'%d.png')
|
391
|
+
|
392
|
+
puts 'fileout: ' + fileout if @debug
|
393
|
+
|
394
|
+
x4ss = X4ss.new fileout, mouse: true, window: true
|
395
|
+
mode = window ? :window : :screen
|
396
|
+
sleep 2; x4ss.record duration: duration, mode: mode
|
397
|
+
x4ss.save
|
398
|
+
|
399
|
+
fileout2 = fileout.sub(/(?=%)/,'b')
|
400
|
+
EasyImgUtils.new(fileout, fileout2).scale(scale) unless scale == 1
|
401
|
+
EasyImgUtils.new(fileout2, @file_out).animate
|
337
402
|
|
403
|
+
end
|
338
404
|
|
339
405
|
def sketch(quality: nil)
|
340
406
|
|
341
|
-
|
407
|
+
read() do |img|
|
342
408
|
|
343
|
-
|
344
|
-
|
409
|
+
# Convert to grayscale
|
410
|
+
sketch = img.quantize(256, Magick::GRAYColorspace)
|
345
411
|
|
346
|
-
|
347
|
-
|
412
|
+
# Apply histogram equalization
|
413
|
+
sketch = sketch.equalize
|
348
414
|
|
349
|
-
|
350
|
-
|
415
|
+
sketch = sketch.sketch(0, 10, 135)
|
416
|
+
img = img.dissolve(sketch, 0.75, 0.25)
|
351
417
|
|
352
|
-
|
418
|
+
write img, quality
|
419
|
+
|
420
|
+
end
|
353
421
|
|
354
422
|
end
|
355
423
|
|
@@ -365,10 +433,12 @@ class EasyImgUtils
|
|
365
433
|
|
366
434
|
def vignette(quality: nil)
|
367
435
|
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
436
|
+
read() do |img|
|
437
|
+
|
438
|
+
img2 = img.vignette
|
439
|
+
write img2, quality
|
440
|
+
|
441
|
+
end
|
372
442
|
|
373
443
|
end
|
374
444
|
|
@@ -377,8 +447,28 @@ class EasyImgUtils
|
|
377
447
|
private
|
378
448
|
|
379
449
|
def read(file=@file_in)
|
380
|
-
|
381
|
-
|
450
|
+
|
451
|
+
files = if file =~ /%d/ then
|
452
|
+
|
453
|
+
regfilepath = file.sub('%d','(\d+)')
|
454
|
+
globfilepath = file.sub('%d','*')
|
455
|
+
|
456
|
+
a = Dir[globfilepath]
|
457
|
+
puts 'a: ' + a.inspect if @debug
|
458
|
+
a.sort_by {|x| Regexp.new(regfilepath).match(x).captures[0].to_i }
|
459
|
+
|
460
|
+
else
|
461
|
+
[file]
|
462
|
+
end
|
463
|
+
|
464
|
+
files.each do |filex|
|
465
|
+
|
466
|
+
@filex_in = filex
|
467
|
+
data, type = RXFHelper.read(filex)
|
468
|
+
yield(Magick::Image.from_blob(data).first)
|
469
|
+
|
470
|
+
end
|
471
|
+
|
382
472
|
end
|
383
473
|
|
384
474
|
def run(command, show=false)
|
@@ -396,19 +486,27 @@ class EasyImgUtils
|
|
396
486
|
|
397
487
|
return img.to_blob unless @file_out
|
398
488
|
|
399
|
-
if @file_out =~
|
489
|
+
file_out = if @file_out =~ /%d/ then
|
490
|
+
regpath = @file_in.sub('%d','(\d+)')
|
491
|
+
n = @filex_in[/#{regpath}/,1]
|
492
|
+
@file_out.sub('%d',n)
|
493
|
+
else
|
494
|
+
@file_out
|
495
|
+
end
|
496
|
+
|
497
|
+
if file_out =~ /^dfs:/ then
|
400
498
|
|
401
|
-
outfile = File.join(@working_dir, File.basename(
|
499
|
+
outfile = File.join(@working_dir, File.basename(file_out))
|
402
500
|
|
403
501
|
img.write outfile do
|
404
502
|
self.quality = quality.to_i if quality
|
405
503
|
end
|
406
504
|
|
407
|
-
FileX.cp outfile,
|
505
|
+
FileX.cp outfile, file_out
|
408
506
|
|
409
507
|
else
|
410
508
|
|
411
|
-
img.write
|
509
|
+
img.write file_out do
|
412
510
|
self.quality = quality.to_i if quality
|
413
511
|
end
|
414
512
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easyimg_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -11,72 +11,72 @@ cert_chain:
|
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
13
|
MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNTEyMTExNzA0WhcN
|
15
|
+
MjEwNTEyMTExNzA0WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
|
16
|
+
cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDNnJ8h
|
17
|
+
QqFXanzUVukVQF0zYimaY+FQLO5mLMKP+PTh2NDWd+UOzngC+3OH5unRId46Pzge
|
18
|
+
bUNkK1jTeaMiyqNeubkZqHhIh0u/QzSVihhsn5DLmb5nukbe755VuoG8ISLMWYno
|
19
|
+
2LCLOfPQTtcU/LmMBGMBkKzjQaA/U2BpM3Ao5dKlgyYzxkh9UUGXQzuQc2vp0Msp
|
20
|
+
rYOhNSz4CtVex2l3TQiBL7Hw+7dh9PPwon0BLXGnfJnJz8wT/09RLgZjJ2z/Ye/w
|
21
|
+
uMWZTE5LswUsP0EqRkRPft0UsjROu4bgAcxY9SXiv2jXCoENQugCJ82/vsjYNs6p
|
22
|
+
d7PXBY7OHBao74Ywc4vjiSjLe91ZpKwNwQVFt0yCpV6Gby0ZYcAeHVM3SuYiKrd3
|
23
|
+
IJ78q18pR4Oroih1soCyaAozDiax+kPxvtx3s5Rw9P+4LvxjTbMY5dCRGBUSW4s8
|
24
|
+
VKv1W1xo1T5ucixalTuGoaEmINv6LI0ZYzyOX6/wdv+s2MgJMOifMO5YnV0CAwEA
|
25
|
+
AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUswJyQrQH
|
26
|
+
BRQmet2GwVJgUkxLihUwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
27
27
|
c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
BgkqhkiG9w0BAQsFAAOCAYEASbXQwXltNOD+/xy+a6FcP6RHDLdUXWVii2QZkwR8
|
29
|
+
n9+EXLWH9/pTS1vICTLz3cqwV9J3o+JdwsRFHMGMHFOFwoItWNYC74J2bmR7q4O8
|
30
|
+
R22guVDNqYotvSUacFDH/aT/702nEkTyXnGhjA/QsrEgUnVzjYY36WYJKK3YUFjD
|
31
|
+
1UL68GiuaphHNHIYOe/aL2lfI3r30Z0KJ5xLuvJtTtNay/HsBlBavdspUKuBDiMG
|
32
|
+
tbTr7XPHZLKpyZCy3JHrNCNmHnkypk2fCgUuz6lMTO5K9lXyXJjMFnim2Wdmpia2
|
33
|
+
BJD+IXi6klFyzJLkQyJGcHP6jCodoiV5HWWU0KDSnQMyNs8HmmBr63RshdHWFHoE
|
34
|
+
o5mCr4o4SP5vu6sUUDmtMbf9d0XtJ46j3qxdRFYvBrLiVbD5MP4v+vSPv2TkMMZE
|
35
|
+
KY48n99T12IOioQ4ghCO1L/UAg2taLOcZbMv4WpV1p9bXKhnrow81zeogZjjiNGS
|
36
|
+
OmTAjCfyGFPC/1eXnSV5Smv8
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2020-07-14 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rmagick
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 4.0.0
|
47
44
|
- - "~>"
|
48
45
|
- !ruby/object:Gem::Version
|
49
|
-
version: '4.
|
46
|
+
version: '4.1'
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 4.1.2
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: 4.0.0
|
57
54
|
- - "~>"
|
58
55
|
- !ruby/object:Gem::Version
|
59
|
-
version: '4.
|
56
|
+
version: '4.1'
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: 4.1.2
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: rxfhelper
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
63
63
|
requirements:
|
64
|
-
- - "~>"
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '0.9'
|
67
64
|
- - ">="
|
68
65
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.
|
66
|
+
version: 1.0.0
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '1.0'
|
70
70
|
type: :runtime
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - "~>"
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0.9'
|
77
74
|
- - ">="
|
78
75
|
- !ruby/object:Gem::Version
|
79
|
-
version: 0.
|
76
|
+
version: 1.0.0
|
77
|
+
- - "~>"
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '1.0'
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: webp-ffi
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,6 +97,26 @@ dependencies:
|
|
97
97
|
- - ">="
|
98
98
|
- !ruby/object:Gem::Version
|
99
99
|
version: 0.2.7
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: x4ss
|
102
|
+
requirement: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 0.2.0
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0.2'
|
110
|
+
type: :runtime
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 0.2.0
|
117
|
+
- - "~>"
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0.2'
|
100
120
|
description:
|
101
121
|
email: james@jamesrobertson.eu
|
102
122
|
executables: []
|
@@ -123,7 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
123
143
|
- !ruby/object:Gem::Version
|
124
144
|
version: '0'
|
125
145
|
requirements: []
|
126
|
-
rubygems_version: 3.0.
|
146
|
+
rubygems_version: 3.0.3
|
127
147
|
signing_key:
|
128
148
|
specification_version: 4
|
129
149
|
summary: Makes manipulating images from 1 line of code easier.
|
metadata.gz.sig
CHANGED
Binary file
|