image_processing 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of image_processing might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 908334dfbdaa9424701386bb8c1722d23679f726
4
- data.tar.gz: abbc3ca67468cedb3729aae261e04e49f1d19cf7
2
+ SHA256:
3
+ metadata.gz: 39c52030a178edeef33439eb70807d86935b1e05bbf250d0f30aa9a4947f6dea
4
+ data.tar.gz: 60c936577febb87380de300024a8f4517ae9dafed394d74fe7b0f78ab04efd7f
5
5
  SHA512:
6
- metadata.gz: 151d52c9bba7feb70a516cda8e59b865e4684993646703219d0806aa0a92b6511cbd15d6af0b0f6d83b948a85926a35a465ccc4bc96531a68e499c4556743ed7
7
- data.tar.gz: bcfb395d26a68bfe7cb21994a319fc982bbd8702a83123d7ac825064c582e46a5bedf3c33263b7f0f6b28e6420786ec1e54b029abf54ed90c487ad52539318ff
6
+ metadata.gz: 9bc68c91084d44b3052a47ac332d21840965537163b541ef09cd662d729c26e152b3e588f97fd954a13aaae0a5a645be86389a79308de4eee154feb7fed95baa
7
+ data.tar.gz: 4c026c8eb9cc4dfa537ef3f0f86b460a8dc0a13134fe441604483b6a4b1afd1048911b499673807fac82f7a15c37773e27fad1dd2d049f8e8adedd5204166923
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 1.2.0 (2018-04-18)
2
+
3
+ * [minimagick] Allow appending "+" operators in `#loader` and `#saver` using the value `false` (@janko-m)
4
+
5
+ * [core] Fix `#apply` not accepting a Hash as an argument (@janko-m)
6
+
7
+ * [core] Allow sending any builder commands via `#apply`, not just operations (@janko-m)
8
+
9
+ * [minimagick] Add `#define` as a wrapper around `-define` (@janko-m)
10
+
1
11
  ## 1.1.0 (2018-04-05)
2
12
 
3
13
  * [minimagick] Disallow splitting multi-layer images into multiple single-layer
@@ -16,24 +16,29 @@ module ImageProcessing
16
16
  branch saver: options
17
17
  end
18
18
 
19
- def apply(operations)
20
- operation :apply, operations
21
- end
22
-
23
19
  def custom(&block)
24
20
  operation :custom, block
25
21
  end
26
22
 
27
- def method_missing(name, *args)
28
- if name.to_s.end_with?("!")
29
- send(name.to_s.chomp("!"), *args).call
30
- elsif name.to_s.end_with?("?")
31
- super
32
- else
33
- operation(name, *args)
23
+ def apply(operations)
24
+ operations.inject(self) do |builder, (name, argument)|
25
+ if argument == true || argument == nil
26
+ builder.send(name)
27
+ elsif argument.is_a?(Array)
28
+ builder.send(name, *argument)
29
+ else
30
+ builder.send(name, argument)
31
+ end
34
32
  end
35
33
  end
36
34
 
35
+ def method_missing(name, *args)
36
+ return super if name.to_s.end_with?("?")
37
+ return send(name.to_s.chomp("!"), *args).call if name.to_s.end_with?("!")
38
+
39
+ operation name, *args
40
+ end
41
+
37
42
  def operation(name, *args)
38
43
  branch operations: [[name, args]]
39
44
  end
@@ -3,6 +3,8 @@ require "image_processing"
3
3
 
4
4
  module ImageProcessing
5
5
  module MiniMagick
6
+ extend Chainable
7
+
6
8
  def self.valid_image?(file)
7
9
  ::MiniMagick::Tool::Convert.new do |convert|
8
10
  convert << file.path
@@ -41,6 +43,22 @@ module ImageProcessing
41
43
  magick.extent "#{width}x#{height}"
42
44
  end
43
45
 
46
+ def define(magick, options)
47
+ return magick.define(options) if options.is_a?(String)
48
+
49
+ options.each do |namespace, options|
50
+ namespace = namespace.to_s.gsub("_", "-")
51
+
52
+ options.each do |key, value|
53
+ key = key.to_s.gsub("_", "-")
54
+
55
+ magick.define "#{namespace}:#{key}=#{value}"
56
+ end
57
+ end
58
+
59
+ magick
60
+ end
61
+
44
62
  def limits(magick, options)
45
63
  limit_args = options.flat_map { |type, value| %W[-limit #{type} #{value}] }
46
64
  prepend_args(magick, limit_args)
@@ -95,20 +113,15 @@ module ImageProcessing
95
113
  end
96
114
 
97
115
  def apply_options(magick, define: {}, **options)
98
- apply(magick, options)
99
- apply_define(magick, define)
100
- end
101
-
102
- def apply_define(magick, define)
103
- define.each do |namespace, options|
104
- namespace = namespace.to_s.gsub("_", "-")
105
-
106
- options.each do |key, value|
107
- key = key.to_s.gsub("_", "-")
108
-
109
- magick.define "#{namespace}:#{key}=#{value}"
116
+ options.each do |option, value|
117
+ case value
118
+ when true, nil then magick.send(option)
119
+ when false then magick.send(option).+
120
+ else magick.send(option, *value)
110
121
  end
111
122
  end
123
+
124
+ define(magick, define)
112
125
  end
113
126
 
114
127
  def prepend_args(magick, args)
@@ -125,7 +138,5 @@ module ImageProcessing
125
138
  end
126
139
  end
127
140
  end
128
-
129
- extend Chainable
130
141
  end
131
142
  end
@@ -4,16 +4,6 @@ module ImageProcessing
4
4
  @pipeline = pipeline
5
5
  end
6
6
 
7
- def apply(image, operations)
8
- operations.inject(image) do |result, (name, args)|
9
- if args == true || args.nil?
10
- apply_operation(name, result)
11
- else
12
- apply_operation(name, result, *args)
13
- end
14
- end
15
- end
16
-
17
7
  def apply_operation(name, image, *args)
18
8
  if respond_to?(name)
19
9
  public_send(name, image, *args)
@@ -1,3 +1,3 @@
1
1
  module ImageProcessing
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -5,6 +5,8 @@ fail "image_processing/vips requires libvips 8.6+" unless Vips.at_least_libvips?
5
5
 
6
6
  module ImageProcessing
7
7
  module Vips
8
+ extend Chainable
9
+
8
10
  def self.valid_image?(file)
9
11
  ::Vips::Image.new_from_file(file.path, access: :sequential).avg
10
12
  true
@@ -26,23 +28,23 @@ module ImageProcessing
26
28
 
27
29
  def resize_to_limit(image, width, height, **options)
28
30
  width, height = default_dimensions(width, height)
29
- generate_thumbnail(image, width, height, size: :down, **options)
31
+ thumbnail(image, width, height, size: :down, **options)
30
32
  end
31
33
 
32
34
  def resize_to_fit(image, width, height, **options)
33
35
  width, height = default_dimensions(width, height)
34
- generate_thumbnail(image, width, height, **options)
36
+ thumbnail(image, width, height, **options)
35
37
  end
36
38
 
37
39
  def resize_to_fill(image, width, height, **options)
38
- generate_thumbnail(image, width, height, crop: :centre, **options)
40
+ thumbnail(image, width, height, crop: :centre, **options)
39
41
  end
40
42
 
41
43
  def resize_and_pad(image, width, height, gravity: "centre", extend: nil, background: nil, alpha: nil, **options)
42
44
  embed_options = { extend: extend, background: background }
43
45
  embed_options.reject! { |name, value| value.nil? }
44
46
 
45
- image = generate_thumbnail(image, width, height, **options)
47
+ image = thumbnail(image, width, height, **options)
46
48
  image = add_alpha(image) if alpha && !has_alpha?(image)
47
49
  image.gravity(gravity, width, height, **embed_options)
48
50
  end
@@ -70,7 +72,7 @@ module ImageProcessing
70
72
 
71
73
  private
72
74
 
73
- def generate_thumbnail(image, width, height, sharpen: SHARPEN_MASK, **options)
75
+ def thumbnail(image, width, height, sharpen: SHARPEN_MASK, **options)
74
76
  image = image.thumbnail_image(width, height: height, **options)
75
77
  image = image.conv(sharpen) if sharpen
76
78
  image
@@ -116,7 +118,5 @@ module ImageProcessing
116
118
  options.select { |name, value| operation_options.include?(name) }
117
119
  end
118
120
  end
119
-
120
- extend Chainable
121
121
  end
122
122
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_processing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Janko Marohnić
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-05 00:00:00.000000000 Z
11
+ date: 2018-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mini_magick
@@ -153,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
153
  version: '0'
154
154
  requirements: []
155
155
  rubyforge_project:
156
- rubygems_version: 2.6.11
156
+ rubygems_version: 2.7.6
157
157
  signing_key:
158
158
  specification_version: 4
159
159
  summary: Set of higher-level helper methods for image processing.