dragonfly_libvips 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -1
- data/lib/dragonfly_libvips.rb +5 -0
- data/lib/dragonfly_libvips/dimensions.rb +65 -0
- data/lib/dragonfly_libvips/processors/thumb.rb +4 -25
- data/lib/dragonfly_libvips/processors/vipsthumbnail.rb +2 -0
- data/lib/dragonfly_libvips/version.rb +1 -1
- data/vendor/sRGB_v4_ICC_preference.icc +0 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8676f2cb2dbae9583ffe2af14c66af041f6e8f64
|
4
|
+
data.tar.gz: 54e568e8da1281466154cd4231aba259bd6740f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 313db91c7c616aacca3cc5b8bb6d1b689d3fcd513ab9b3a47b90fe1676f7688f08d77bd7803f192a03512068411ea84a18ec48bae65f114d7f12d71d6e926a14
|
7
|
+
data.tar.gz: 9b07b4d96eaa40c32c06d86f089b4b90cfe9756ffb9b3ba17df7866758d23f6430dd11263662beadbf050062029cc68ba6b77626a3c2007481440d730ff764a7
|
data/README.md
CHANGED
@@ -109,9 +109,16 @@ image.vipsthumbnail('--size=100x100', { 'input_args' => 'page=2', 'output_args'
|
|
109
109
|
corresponds to the command-line
|
110
110
|
|
111
111
|
```
|
112
|
-
vipsthumbnail <original_path>[page=2] --size=100x100 -o <new-path>[Q=50]
|
112
|
+
vipsthumbnail <original_path>[page=2] --size=100x100 -o <new-path>[Q=50] --eprofile=./vendor/sRGB_v4_ICC_preference.icc
|
113
113
|
```
|
114
114
|
|
115
|
+
Please note that unless specified a default sRGB profile is added (required for conversion from CMYK, for example). It can be overridden by specifying alternative on in the processors args:
|
116
|
+
|
117
|
+
```ruby
|
118
|
+
image.vipsthumbnail('--size=100x100 --eprofile=./my_custom_profile.icc')
|
119
|
+
```
|
120
|
+
|
121
|
+
|
115
122
|
### Analysers
|
116
123
|
|
117
124
|
The following methods are provided
|
data/lib/dragonfly_libvips.rb
CHANGED
@@ -0,0 +1,65 @@
|
|
1
|
+
module DragonflyLibvips
|
2
|
+
class Dimensions < Struct.new(:geometry, :orig_w, :orig_h)
|
3
|
+
def self.call(*args)
|
4
|
+
new(*args).call
|
5
|
+
end
|
6
|
+
|
7
|
+
def call
|
8
|
+
return OpenStruct.new(width: orig_w, height: orig_h) if do_not_resize_if_image_smaller_than_requested? || do_not_resize_if_image_larger_than_requested?
|
9
|
+
OpenStruct.new(width: width, height: height)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def width
|
15
|
+
if landscape?
|
16
|
+
dimensions_specified_by_width? ? dimensions.width : dimensions.height / aspect_ratio
|
17
|
+
else
|
18
|
+
dimensions_specified_by_height? ? dimensions.height / aspect_ratio : dimensions.width
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def height
|
23
|
+
if landscape?
|
24
|
+
dimensions_specified_by_width? ? dimensions.width * aspect_ratio : dimensions.height
|
25
|
+
else
|
26
|
+
dimensions_specified_by_height? ? dimensions.height : dimensions.width * aspect_ratio
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def dimensions
|
31
|
+
w, h = geometry.scan(/\A(\d*)x(\d*)/).flatten.map(&:to_f)
|
32
|
+
OpenStruct.new(width: w, height: h)
|
33
|
+
end
|
34
|
+
|
35
|
+
def aspect_ratio
|
36
|
+
orig_h.to_f / orig_w
|
37
|
+
end
|
38
|
+
|
39
|
+
def dimensions_specified_by_width?
|
40
|
+
dimensions.width > 0
|
41
|
+
end
|
42
|
+
|
43
|
+
def dimensions_specified_by_height?
|
44
|
+
dimensions.height > 0
|
45
|
+
end
|
46
|
+
|
47
|
+
def landscape?
|
48
|
+
aspect_ratio <= 1.0
|
49
|
+
end
|
50
|
+
|
51
|
+
def portrait?
|
52
|
+
!landscape?
|
53
|
+
end
|
54
|
+
|
55
|
+
def do_not_resize_if_image_smaller_than_requested?
|
56
|
+
return false unless geometry.include? '>'
|
57
|
+
orig_w < width && orig_h < height
|
58
|
+
end
|
59
|
+
|
60
|
+
def do_not_resize_if_image_larger_than_requested?
|
61
|
+
return false unless geometry.include? '<'
|
62
|
+
orig_w > width && orig_h > height
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -15,6 +15,8 @@ module DragonflyLibvips
|
|
15
15
|
url_attributes.ext = format if format
|
16
16
|
end
|
17
17
|
|
18
|
+
private
|
19
|
+
|
18
20
|
def args_for_geometry(geometry, image_properties)
|
19
21
|
case geometry
|
20
22
|
when RESIZE_GEOMETRY then resize_args(geometry, image_properties)
|
@@ -22,32 +24,9 @@ module DragonflyLibvips
|
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
25
|
-
private
|
26
|
-
|
27
27
|
def resize_args(geometry, image_properties)
|
28
|
-
|
29
|
-
|
30
|
-
ratio = w.to_f / h.to_f
|
31
|
-
is_landscape = ratio > 1.0
|
32
|
-
|
33
|
-
width, height = geometry.scan(/\A(\d*)x(\d*)/).flatten.map(&:to_i)
|
34
|
-
|
35
|
-
case geometry
|
36
|
-
when /\Ax\d+[#{OPERATORS}]?/
|
37
|
-
width = is_landscape ? (ratio * height).round : height
|
38
|
-
when /\A\d+x[#{OPERATORS}]?\z/
|
39
|
-
height = is_landscape ? width : (width / ratio).round
|
40
|
-
end
|
41
|
-
|
42
|
-
case geometry
|
43
|
-
when />\z/
|
44
|
-
width, height = w, h if width >= w || height >= h
|
45
|
-
when /<\z/
|
46
|
-
width, height = w, h if width <= w && height <= h
|
47
|
-
end
|
48
|
-
|
49
|
-
dimensions = "#{width}x#{height}"
|
50
|
-
"-s #{dimensions}"
|
28
|
+
res = Dimensions.call(geometry, image_properties['width'], image_properties['height'])
|
29
|
+
"-s #{res.width.round}x#{res.height.round}"
|
51
30
|
end
|
52
31
|
end
|
53
32
|
end
|
@@ -13,6 +13,8 @@ module DragonflyLibvips
|
|
13
13
|
output_args = "[#{output_args}]"
|
14
14
|
end
|
15
15
|
|
16
|
+
args = [args, "--eprofile=#{EPROFILE_PATH}"].compact.join(' ') unless args.include?('eprofile')
|
17
|
+
|
16
18
|
content.shell_update ext: format do |old_path, new_path|
|
17
19
|
"#{vipsthumbnail_command} #{old_path}#{input_args} -o #{new_path}#{output_args} #{args}"
|
18
20
|
end
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dragonfly_libvips
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas Celizna
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dragonfly
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- dragonfly_libvips.gemspec
|
115
115
|
- lib/dragonfly_libvips.rb
|
116
116
|
- lib/dragonfly_libvips/analysers/image_properties.rb
|
117
|
+
- lib/dragonfly_libvips/dimensions.rb
|
117
118
|
- lib/dragonfly_libvips/plugin.rb
|
118
119
|
- lib/dragonfly_libvips/processors/encode.rb
|
119
120
|
- lib/dragonfly_libvips/processors/thumb.rb
|
@@ -124,6 +125,7 @@ files:
|
|
124
125
|
- samples/landscape_beach.png
|
125
126
|
- samples/memo.pdf
|
126
127
|
- samples/white pixel.png
|
128
|
+
- vendor/sRGB_v4_ICC_preference.icc
|
127
129
|
homepage: https://github.com/tomasc/dragonfly_libvips
|
128
130
|
licenses:
|
129
131
|
- MIT
|