easyimg_utils 0.7.1 → 0.7.2
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 +63 -1
- 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: c09e7c063bbd8a5c1060c74338346317b3432f46e53a0e3cdc6e0d4a64553520
|
4
|
+
data.tar.gz: 8d73c424b106e51dea74394557e601b8ea78bfca66fd43bf80a10088527ba726
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 602af329751d96be2d89a4b6487d35d9c1920a4e56fb8d5330014e8e924b0edb44db1f74bd926224bcf3ee62435cba1b3b209ccea1f2301b0618a299534702b9
|
7
|
+
data.tar.gz: abd50555f42ad809647180e58325578951b653f545fc7411c8b58e3132625ff90e82666509d1933ecf75d48409437b27dad9718fa60a4183c4d0174bc85e0fa5
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/easyimg_utils.rb
CHANGED
@@ -57,6 +57,7 @@ class EasyImgUtils
|
|
57
57
|
* add_svg # adds an SVG transparency overlay. usage: add_svg('/tmp/image1.svg')
|
58
58
|
* add_text # e.g. add_text('some text')
|
59
59
|
* animate Creates an animated gif e.g. animate('/tmp/a%d.png', '/tmp/b.gif')
|
60
|
+
* best_viewport # returns the best viewing region on the y-axis
|
60
61
|
* blur # e.g. blur(x: 231, y: 123, w: 85, h: 85)
|
61
62
|
* capture_screen # takes a screenshot of the desktop
|
62
63
|
* calc_resize # e.g. calc_resize '640x480' #=> 640x491
|
@@ -175,6 +176,41 @@ class EasyImgUtils
|
|
175
176
|
|
176
177
|
end
|
177
178
|
|
179
|
+
# Used where images are perhaps cropped using CSS to a letterbox size image.
|
180
|
+
# Works best with portrait mode photos of selfies or natural
|
181
|
+
# landscapes with a lot of sky
|
182
|
+
#
|
183
|
+
# Returns the starting y pos as a percentage of the image using face
|
184
|
+
# detection and high contrast detection on the y-axis
|
185
|
+
#
|
186
|
+
def best_viewport()
|
187
|
+
|
188
|
+
percentage = 0
|
189
|
+
|
190
|
+
read() do |img|
|
191
|
+
|
192
|
+
found = faces()
|
193
|
+
|
194
|
+
index = if found.any? then
|
195
|
+
|
196
|
+
# find the top y
|
197
|
+
box = found.max_by {|x, y, width, height| y}
|
198
|
+
box[1]
|
199
|
+
|
200
|
+
else
|
201
|
+
|
202
|
+
y_maxcontrast(img)
|
203
|
+
|
204
|
+
end
|
205
|
+
|
206
|
+
percentage = (100 / (img.rows / index.to_f)).round
|
207
|
+
|
208
|
+
end
|
209
|
+
|
210
|
+
return percentage
|
211
|
+
|
212
|
+
end
|
213
|
+
|
178
214
|
def blur(x: 0, y: 0, w: 80, h: 80, strength: 8, quality: nil)
|
179
215
|
|
180
216
|
width, height = w, h
|
@@ -483,7 +519,7 @@ class EasyImgUtils
|
|
483
519
|
|
484
520
|
end
|
485
521
|
|
486
|
-
alias feathered_around vignette
|
522
|
+
alias feathered_around vignette
|
487
523
|
|
488
524
|
private
|
489
525
|
|
@@ -553,5 +589,31 @@ class EasyImgUtils
|
|
553
589
|
|
554
590
|
end
|
555
591
|
end
|
592
|
+
|
593
|
+
# returns the y index of the pixel containing the most contrast using the
|
594
|
+
# y-axis center of the image
|
595
|
+
#
|
596
|
+
def y_maxcontrast(img)
|
597
|
+
|
598
|
+
rows, cols = img.rows, img.columns
|
599
|
+
center = (cols / 2).round
|
600
|
+
pixels = img.get_pixels(center,0,1,rows)
|
601
|
+
|
602
|
+
rgb = []
|
603
|
+
px = pixels[0]
|
604
|
+
rgb = [px.red, px.green, px.blue].map { |v| 255*(v/65535.0) }
|
556
605
|
|
606
|
+
a = pixels[1..-1].map do |pixel,i|
|
607
|
+
|
608
|
+
c = [pixel.red, pixel.green, pixel.blue].map { |v| 255*(v/65535.0) }
|
609
|
+
rgb[0] - c[0]
|
610
|
+
rgb.map.with_index {|x,i| (x - c[i]).abs.to_i}
|
611
|
+
|
612
|
+
end
|
613
|
+
|
614
|
+
a2 = a.map(&:sum)
|
615
|
+
a2.index(a2.max) + 1
|
616
|
+
|
617
|
+
end
|
618
|
+
|
557
619
|
end
|
metadata
CHANGED
metadata.gz.sig
CHANGED
Binary file
|