easyimg_utils 0.6.2 → 0.7.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/easyimg_utils.rb +42 -1
- metadata +21 -20
- 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: 1770c2dc6e430a4cbb3af042379344927227ea4a2e7ae8aabd57be362c956ea5
|
4
|
+
data.tar.gz: b53d0b56ee4c884edecfae57500ec8ff41a927e7dd172d144108787c895d5d51
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8a5e8046f81af69d57dd8b6b53c242d7378a37892c4a960115577746e22928614d7d53c32cff9947ffaa1825fde3808b9d7f0180acb8b56f6fc7e98a61dabd2
|
7
|
+
data.tar.gz: 65dd367226a621b13179ce3d58bc228e9c6afdde398c13d95b33c2e6751ecbb224fee977959d5568c45d7dfaece13cb51b4d131d702b1cba4df7ec69e04b4fa4
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/easyimg_utils.rb
CHANGED
@@ -7,6 +7,7 @@ require 'x4ss'
|
|
7
7
|
require 'rmagick'
|
8
8
|
require 'webp_ffi'
|
9
9
|
require 'rxfhelper'
|
10
|
+
require 'detectfaces'
|
10
11
|
|
11
12
|
# requirements:
|
12
13
|
#
|
@@ -19,6 +20,8 @@ require 'rxfhelper'
|
|
19
20
|
# webp-ffi dependencies
|
20
21
|
# apt-get install libjpeg-dev libpng-dev libtiff-dev libwebp-dev
|
21
22
|
#
|
23
|
+
# detectfaces dependencies
|
24
|
+
# apt-get install libopencv-dev
|
22
25
|
|
23
26
|
|
24
27
|
|
@@ -47,6 +50,7 @@ class EasyImgUtils
|
|
47
50
|
extend CommandHelper
|
48
51
|
include Magick
|
49
52
|
include RXFHelperModule
|
53
|
+
|
50
54
|
|
51
55
|
@commands = "
|
52
56
|
* add rectangle # usage: add_rectangle(color: 'green', x1: 12, y1: 12, x2: 24, y2: 24)
|
@@ -55,12 +59,14 @@ class EasyImgUtils
|
|
55
59
|
* animate Creates an animated gif e.g. animate('/tmp/a%d.png', '/tmp/b.gif')
|
56
60
|
* blur # e.g. blur(x: 231, y: 123, w: 85, h: 85)
|
57
61
|
* capture_screen # takes a screenshot of the desktop
|
62
|
+
* calc_resize # e.g. calc_resize '640x480' #=> 640x491
|
58
63
|
* center_crop # crops from the centre of an image. Usage center_crop(width, height)
|
59
64
|
* composite # overlay a smaller image on top of an image
|
60
65
|
* contrast # changes the intensity between lighter and darker elements
|
61
66
|
* convert # convert from 1 img format to another
|
62
67
|
* crop # e.g. crop(x: 231, y: 123, w: 85, h: 85)
|
63
68
|
* fax_effect # Produces a high-contrast, two colour image
|
69
|
+
* faces # Returns an array of bounding boxes for detected faces
|
64
70
|
* greyscale # Reduces the image to 256 shades of grey
|
65
71
|
* info # returns the dimension of the image in a Hash object
|
66
72
|
* make_thumbnail # similar to resize but faster for sizes less than 10% of original image
|
@@ -85,6 +91,29 @@ class EasyImgUtils
|
|
85
91
|
|
86
92
|
end
|
87
93
|
|
94
|
+
# e.g. calc_resize '1449x1932', '640x480' #=> 480x640
|
95
|
+
# e.g. calc_resize '518x1024', '*518x500' #=> "518x1024"
|
96
|
+
# the asterisk denotes a guaranteed the image will be resized using x or y
|
97
|
+
#
|
98
|
+
def self.calc_resize(geometry, new_geometry, force: false)
|
99
|
+
|
100
|
+
xy = geometry.split('x',2)
|
101
|
+
xy2 = new_geometry.split('x',2)
|
102
|
+
|
103
|
+
# find any locked geometry which guarantees the resize on either x or y
|
104
|
+
lock = xy2.find {|x| x =~ /^\*/}
|
105
|
+
|
106
|
+
a = xy.map {|x| x[/\d+/].to_i}
|
107
|
+
a2 = xy2.map {|x| x[/\d+/].to_i}
|
108
|
+
|
109
|
+
i = lock ? a2.index(lock[1..-1].to_i) : a.index(a.max)
|
110
|
+
|
111
|
+
factor = a2[i] / a[i].to_f
|
112
|
+
|
113
|
+
s3 = a.map {|x| (x * factor).round}.join('x')
|
114
|
+
|
115
|
+
end
|
116
|
+
|
88
117
|
def add_rectangle(a=[], quality: nil, color: 'green', stroke_width: 5,
|
89
118
|
x1: 0, y1: 0, x2: 0, y2: 0)
|
90
119
|
|
@@ -169,6 +198,12 @@ class EasyImgUtils
|
|
169
198
|
end
|
170
199
|
end
|
171
200
|
|
201
|
+
# calculates the new geometry after a resize
|
202
|
+
#
|
203
|
+
def calc_resize(geometry)
|
204
|
+
EasyImgUtils.calc_resize(info()[:geometry], geometry)
|
205
|
+
end
|
206
|
+
|
172
207
|
def capture_screen(quality: nil)
|
173
208
|
|
174
209
|
# defaults (silent=false, frame=false, descend=false,
|
@@ -273,6 +308,10 @@ class EasyImgUtils
|
|
273
308
|
|
274
309
|
end
|
275
310
|
|
311
|
+
def faces()
|
312
|
+
DetectFaces.new(@file_in).faces
|
313
|
+
end
|
314
|
+
|
276
315
|
def fax_effect(threshold: 0.55, quality: nil)
|
277
316
|
|
278
317
|
read() do |img|
|
@@ -321,8 +360,10 @@ class EasyImgUtils
|
|
321
360
|
|
322
361
|
# defines the maximum size of an image while maintaining aspect ratio
|
323
362
|
#
|
324
|
-
def resize(
|
363
|
+
def resize(raw_geometry='320x240', quality: nil)
|
325
364
|
|
365
|
+
geometry = calc_resize(raw_geometry
|
366
|
+
)
|
326
367
|
read() do |preview|
|
327
368
|
|
328
369
|
preview.change_geometry!(geometry) do |cols, rows, img|
|
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.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
KY48n99T12IOioQ4ghCO1L/UAg2taLOcZbMv4WpV1p9bXKhnrow81zeogZjjiNGS
|
36
36
|
OmTAjCfyGFPC/1eXnSV5Smv8
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
38
|
+
date: 2021-03-23 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rmagick
|
@@ -43,60 +43,60 @@ dependencies:
|
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '4.
|
46
|
+
version: '4.2'
|
47
47
|
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 4.
|
49
|
+
version: 4.2.2
|
50
50
|
type: :runtime
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: '4.
|
56
|
+
version: '4.2'
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version: 4.
|
59
|
+
version: 4.2.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: 1.0.0
|
67
64
|
- - "~>"
|
68
65
|
- !ruby/object:Gem::Version
|
69
|
-
version: '1.
|
66
|
+
version: '1.1'
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.1.3
|
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: 1.0.0
|
77
74
|
- - "~>"
|
78
75
|
- !ruby/object:Gem::Version
|
79
|
-
version: '1.
|
76
|
+
version: '1.1'
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: 1.1.3
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: webp-ffi
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
83
83
|
requirements:
|
84
84
|
- - "~>"
|
85
85
|
- !ruby/object:Gem::Version
|
86
|
-
version: '0.
|
86
|
+
version: '0.3'
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 0.
|
89
|
+
version: 0.3.1
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0.
|
96
|
+
version: '0.3'
|
97
97
|
- - ">="
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version: 0.
|
99
|
+
version: 0.3.1
|
100
100
|
- !ruby/object:Gem::Dependency
|
101
101
|
name: x4ss
|
102
102
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,7 +118,7 @@ dependencies:
|
|
118
118
|
- !ruby/object:Gem::Version
|
119
119
|
version: '0.2'
|
120
120
|
description:
|
121
|
-
email:
|
121
|
+
email: digital.robertson@gmail.com
|
122
122
|
executables: []
|
123
123
|
extensions: []
|
124
124
|
extra_rdoc_files: []
|
@@ -143,7 +143,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: '0'
|
145
145
|
requirements: []
|
146
|
-
|
146
|
+
rubyforge_project:
|
147
|
+
rubygems_version: 2.7.10
|
147
148
|
signing_key:
|
148
149
|
specification_version: 4
|
149
150
|
summary: Makes manipulating images from 1 line of code easier.
|
metadata.gz.sig
CHANGED
Binary file
|