easyimg_utils 0.2.1 → 0.3.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 +2 -1
- data/lib/easyimg_utils.rb +143 -15
- data.tar.gz.sig +0 -0
- metadata +1 -1
- 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: 9e40cc156b9ae80cfc9ec4f1db9f44b886a73e9364924d88bc3cc73d6344d9b2
|
|
4
|
+
data.tar.gz: e7bcb81e66135174816218d2729b05d140eec50dc9b94e4e4d6a509578b69a72
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d77d64f6b55259700029284542eb2b5e308b1fb25086acf30be8829e6872745fc35b60b8103abf69dadcfcdc193246810095b600c348ad91d77bfbdd6b72642e
|
|
7
|
+
data.tar.gz: 259a7364e0283cc6ebfb21a12bdbc3037a63e7deae9894390e589d2bfe5150973b585e5bff5717c652a0b0dda2963a3d7c964233e5de640e1d094127ced4d65c
|
checksums.yaml.gz.sig
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
��kg��Q8�'v\�
|
|
2
|
+
E_���k��*v�t��D�g�����~�K�����~u5���J�dNa��cO�o�Q,3���3���U�����@��w�Y&���x�X%�+�
|
data/lib/easyimg_utils.rb
CHANGED
|
@@ -26,12 +26,12 @@ module CommandHelper
|
|
|
26
26
|
" %s %s %s" % ['*'.blue, command, desc.to_s.light_black]
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
puts a.map
|
|
29
|
+
puts a.map(&format_command).join("\n")
|
|
30
30
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def search(s)
|
|
34
|
-
list @commands.grep Regexp.new(s)
|
|
34
|
+
list @commands.grep Regexp.new(s.to_s)
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
end
|
|
@@ -42,40 +42,47 @@ class EasyImgUtils
|
|
|
42
42
|
include Magick
|
|
43
43
|
|
|
44
44
|
@commands = "
|
|
45
|
+
* add rectangle # usage: add_rectangle(color: 'green', x1: 12, y1: 12, x2: 24, y2: 24)
|
|
45
46
|
* add_svg # adds an SVG transparency overlay. usage: add_svg('/tmp/image1.svg')
|
|
46
47
|
* add_text # e.g. add_text('some text')
|
|
47
48
|
* blur # e.g. blur(x: 231, y: 123, w: 85, h: 85)
|
|
49
|
+
* center_crop # crops from the centre of an image. Usage center_crop(width, height)
|
|
50
|
+
* composite # overlay a smaller image on top of an image
|
|
51
|
+
* contrast # changes the intensity between lighter and darker elements
|
|
48
52
|
* crop # e.g. crop(x: 231, y: 123, w: 85, h: 85)
|
|
53
|
+
* fax_effect # Produces a high-contrast, two colour image
|
|
54
|
+
* greyscale # Reduces the image to 256 shades of grey
|
|
49
55
|
* info # returns the dimension of the image in a Hash object
|
|
56
|
+
* make_thumbnail # similar to resize but faster for sizes less than 10% of original image
|
|
50
57
|
* resize # set the maximum geomertry of the image for resizing e.g. resize('320x240')
|
|
58
|
+
* sketch # renders an artistic sketch, ideal with simplistic photos
|
|
51
59
|
* view # view the output
|
|
60
|
+
* vignette # Feathers the edge of an image in a circular path
|
|
52
61
|
".strip.lines.map {|x| x[/(?<=\* ).*/]}.sort
|
|
53
62
|
|
|
54
63
|
|
|
55
64
|
def initialize(img_in=nil, img_out=nil, out: img_out,
|
|
56
65
|
working_dir: '/tmp')
|
|
57
66
|
|
|
58
|
-
@file_in, @file_out, @working_dir = img_in, out, working_dir
|
|
67
|
+
@file_in, @file_out, @working_dir = img_in, out, working_dir
|
|
59
68
|
|
|
60
69
|
end
|
|
61
70
|
|
|
62
|
-
def
|
|
71
|
+
def add_rectangle(a=[], quality: nil, color: 'green', stroke_width: 5,
|
|
72
|
+
x1: 0, y1: 0, x2: 0, y2: 0)
|
|
63
73
|
|
|
74
|
+
x1, y1, x2, y2 = *a if a
|
|
64
75
|
img = read()
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
d.fill = '#ffffff'
|
|
72
|
-
d.font_weight = Magick::BoldWeight
|
|
73
|
-
end
|
|
74
|
-
|
|
76
|
+
gc = Magick::Draw.new
|
|
77
|
+
gc.stroke('green')
|
|
78
|
+
gc.stroke_width(5)
|
|
79
|
+
gc.fill('transparent')
|
|
80
|
+
gc.rectangle(x1, y1, x2, y2)
|
|
81
|
+
gc.draw(img)
|
|
75
82
|
write img, quality
|
|
76
83
|
|
|
77
84
|
end
|
|
78
|
-
|
|
85
|
+
|
|
79
86
|
def add_svg(svg_file)
|
|
80
87
|
|
|
81
88
|
img = Magick::ImageList.new
|
|
@@ -89,6 +96,24 @@ class EasyImgUtils
|
|
|
89
96
|
img.flatten_images.write @file_out
|
|
90
97
|
|
|
91
98
|
end
|
|
99
|
+
|
|
100
|
+
def add_text(s='your text goes here', quality: nil)
|
|
101
|
+
|
|
102
|
+
img = read()
|
|
103
|
+
|
|
104
|
+
d = Draw.new
|
|
105
|
+
img.annotate(d, 0,0,0,0, s) do
|
|
106
|
+
d.gravity = Magick::SouthGravity
|
|
107
|
+
d.pointsize = 26
|
|
108
|
+
d.stroke = '#000000'
|
|
109
|
+
d.fill = '#ffffff'
|
|
110
|
+
d.font_weight = Magick::BoldWeight
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
write img, quality
|
|
114
|
+
|
|
115
|
+
end
|
|
116
|
+
|
|
92
117
|
|
|
93
118
|
def blur(x: 0, y: 0, w: 80, h: 80, strength: 8, quality: nil)
|
|
94
119
|
|
|
@@ -101,6 +126,54 @@ class EasyImgUtils
|
|
|
101
126
|
write img, quality
|
|
102
127
|
|
|
103
128
|
end
|
|
129
|
+
|
|
130
|
+
def center_crop(w=0, h=0, width: w, height: h, quality: nil)
|
|
131
|
+
|
|
132
|
+
return unless w
|
|
133
|
+
|
|
134
|
+
img = read()
|
|
135
|
+
img.crop!(CenterGravity, width, height)
|
|
136
|
+
write img, quality
|
|
137
|
+
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def composite(filex=nil, x: 0, y: 0, quality: nil)
|
|
141
|
+
|
|
142
|
+
return unless filex
|
|
143
|
+
|
|
144
|
+
img = read()
|
|
145
|
+
|
|
146
|
+
imgx = Magick::ImageList.new(filex)
|
|
147
|
+
|
|
148
|
+
# Change the white pixels in the sign to transparent.
|
|
149
|
+
imgx = imgx.matte_replace(0,0)
|
|
150
|
+
|
|
151
|
+
img2 = Magick::Draw.new
|
|
152
|
+
img2.composite(x, y, 0, 0, imgx)
|
|
153
|
+
img2.draw(img)
|
|
154
|
+
|
|
155
|
+
write img, quality
|
|
156
|
+
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
# contrast level
|
|
160
|
+
# 1 low -> 10 high
|
|
161
|
+
#
|
|
162
|
+
def contrast(level=5)
|
|
163
|
+
|
|
164
|
+
neutral = 5
|
|
165
|
+
|
|
166
|
+
return if level == neutral
|
|
167
|
+
|
|
168
|
+
img ||= read()
|
|
169
|
+
|
|
170
|
+
n = neutral - level
|
|
171
|
+
sharpen = n > 0
|
|
172
|
+
n.abs.times { img = img.contrast(sharpen) }
|
|
173
|
+
|
|
174
|
+
write img, quality
|
|
175
|
+
|
|
176
|
+
end
|
|
104
177
|
|
|
105
178
|
def crop(x: 0, y: 0, w: nil, h: nil, quality: nil)
|
|
106
179
|
|
|
@@ -112,6 +185,27 @@ class EasyImgUtils
|
|
|
112
185
|
|
|
113
186
|
end
|
|
114
187
|
|
|
188
|
+
def fax_effect(threshold: 0.55, quality: nil)
|
|
189
|
+
|
|
190
|
+
img = read()
|
|
191
|
+
|
|
192
|
+
# Use a threshold of 55% of MaxRGB.
|
|
193
|
+
img = img.threshold(Magick::MaxRGB*threshold)
|
|
194
|
+
|
|
195
|
+
write img, quality
|
|
196
|
+
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
def greyscale(quality: nil)
|
|
200
|
+
|
|
201
|
+
img = read()
|
|
202
|
+
img2 = img.quantize(256, GRAYColorspace)
|
|
203
|
+
write img2, quality
|
|
204
|
+
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
alias grayscale greyscale
|
|
208
|
+
|
|
115
209
|
def info()
|
|
116
210
|
|
|
117
211
|
img = Magick::Image.ping( @file_in ).first
|
|
@@ -123,6 +217,14 @@ class EasyImgUtils
|
|
|
123
217
|
}
|
|
124
218
|
|
|
125
219
|
end
|
|
220
|
+
|
|
221
|
+
def make_thumbnail(width=125, height=125)
|
|
222
|
+
|
|
223
|
+
img = read()
|
|
224
|
+
img2 = img.thumbnail(width, height)
|
|
225
|
+
write img2, quality
|
|
226
|
+
|
|
227
|
+
end
|
|
126
228
|
|
|
127
229
|
# defines the maximum size of an image while maintaining aspect ratio
|
|
128
230
|
#
|
|
@@ -134,6 +236,23 @@ class EasyImgUtils
|
|
|
134
236
|
img.resize!(cols, rows)
|
|
135
237
|
end
|
|
136
238
|
|
|
239
|
+
write preview, quality
|
|
240
|
+
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
def sketch(quality: nil)
|
|
244
|
+
|
|
245
|
+
img = read()
|
|
246
|
+
|
|
247
|
+
# Convert to grayscale
|
|
248
|
+
sketch = img.quantize(256, Magick::GRAYColorspace)
|
|
249
|
+
|
|
250
|
+
# Apply histogram equalization
|
|
251
|
+
sketch = sketch.equalize
|
|
252
|
+
|
|
253
|
+
sketch = sketch.sketch(0, 10, 135)
|
|
254
|
+
img = img.dissolve(sketch, 0.75, 0.25)
|
|
255
|
+
|
|
137
256
|
write img, quality
|
|
138
257
|
|
|
139
258
|
end
|
|
@@ -145,6 +264,15 @@ class EasyImgUtils
|
|
|
145
264
|
run command, show
|
|
146
265
|
|
|
147
266
|
end
|
|
267
|
+
|
|
268
|
+
def vignette(quality: nil)
|
|
269
|
+
|
|
270
|
+
img = read()
|
|
271
|
+
img2 = img.vignette
|
|
272
|
+
|
|
273
|
+
write img2, quality
|
|
274
|
+
|
|
275
|
+
end
|
|
148
276
|
|
|
149
277
|
private
|
|
150
278
|
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
metadata.gz.sig
CHANGED
|
Binary file
|