dragonfly_libvips 2.1.3 → 2.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8118fbd55a1cbcb7be9c6e76370e1f83b2a5222e
4
- data.tar.gz: 8700640ab82189fbfeaceba1a6a8639bbe1a932d
2
+ SHA256:
3
+ metadata.gz: 5550340dee7a433f18f190dce904f2fe02caa339677626503f05d408f9e21cd5
4
+ data.tar.gz: 2b1055e2d247034322a5a6113a7af655d7762e83f4fb22525c26578db14c65a7
5
5
  SHA512:
6
- metadata.gz: 797f609aa2412b97e5b738b26e429fedc81bc485b5aa19c6c2b3e432dca043c073ff1613934d84e4d5322707a3bac195e8d330df141320cc3cbd9fd2d7bd05e9
7
- data.tar.gz: bca9f54bc9b8969fc601fe3d4b7798c1d30c2003c8c1e3483c5f3b1cecc1d26526fb59e92bdfbf6eef64137b6dedbecef9bd92f9c4edeea17b5769fc873fe291
6
+ metadata.gz: 6dd9e3e8cba7f60fd0eb3ee480f6362f88d1e3270d93ed2503b6ae69a4cb954a4f7994dd9fe1d7c24a7b0266361ea1c930bb2d22fa94ccf5f095b2ef2aabc897
7
+ data.tar.gz: c56578890115a8c235458b7893bcc07757c0c5422d1b73d006904032924b6fa2f450f8c2644038ac023742430ca37b9452271d405437113bfe8c96bece9ce55c
@@ -1,5 +1,12 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 2.2.0
4
+
5
+ * add `SUPPORTED_FORMATS` and `SUPPORTED_OUTPUT_FORMATS` and raise errors when formats are not matching
6
+ * add more thorough tests for supported formats
7
+ * skip unnecessary conversion from-to same format
8
+ * add `extract_area` processor
9
+
3
10
  ## 2.1.3
4
11
 
5
12
  * make sure the downcase analyser survives nil
data/README.md CHANGED
@@ -46,9 +46,18 @@ Dragonfly.app.configure do
46
46
  end
47
47
  ```
48
48
 
49
- ### Processors
49
+ ## Supported Formats
50
50
 
51
- #### Thumb
51
+ List of supported formats (based on your build and version of the `libvips` library) is available as:
52
+
53
+ ```ruby
54
+ DragonflyLibvips::SUPPORTED_FORMATS # => ["csv", "dz", "gif", …]
55
+ DragonflyLibvips::SUPPORTED_OUTPUT_FORMATS # => ["csv", "dz", "gif", …]
56
+ ```
57
+
58
+ ## Processors
59
+
60
+ ### Thumb
52
61
 
53
62
  Create a thumbnail by resizing/cropping
54
63
 
@@ -66,7 +75,7 @@ Below are some examples of geometry strings for `thumb`:
66
75
  '400x300>' # resize only if the image is larger than this
67
76
  ```
68
77
 
69
- #### Encode
78
+ ### Encode
70
79
 
71
80
  Change the encoding with
72
81
 
@@ -74,13 +83,15 @@ Change the encoding with
74
83
  image.encode('jpg')
75
84
  ```
76
85
 
77
- optionally pass output arguments (specific to format)
86
+ ### Extract Area
87
+
88
+ Extract an area from an image.
78
89
 
79
90
  ```ruby
80
- image.encode('jpg')
91
+ image.extract_area(x, y, width, height)
81
92
  ```
82
93
 
83
- #### Rotate
94
+ ### Rotate
84
95
 
85
96
  Rotate a number of degrees with
86
97
 
@@ -88,7 +99,7 @@ Rotate a number of degrees with
88
99
  image.rotate(90)
89
100
  ```
90
101
 
91
- #### Options
102
+ ### Options
92
103
 
93
104
  All processors support `input_options` and `output_options` for passing additional options to vips. For example:
94
105
 
@@ -104,7 +115,7 @@ input_options: { access: :sequential }
104
115
  output_options: { profile: … } # embeds 'sRGB_v4_ICC_preference.icc' profile included with this gem
105
116
  ```
106
117
 
107
- ### Analysers
118
+ ## Analysers
108
119
 
109
120
  The following methods are provided
110
121
 
@@ -1,5 +1,5 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+
2
+ lib = File.expand_path('lib', __dir__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'dragonfly_libvips/version'
5
5
 
@@ -20,11 +20,11 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency 'dragonfly', '~> 1.0'
22
22
  spec.add_dependency 'ruby-vips', '~> 2.0', '>= 2.0.6'
23
- spec.add_dependency 'activesupport', '>= 4.0'
24
23
 
25
24
  spec.add_development_dependency 'bundler', '~> 1.12'
26
25
  spec.add_development_dependency 'guard'
27
26
  spec.add_development_dependency 'guard-minitest'
28
27
  spec.add_development_dependency 'minitest', '~> 5.0'
28
+ spec.add_development_dependency 'minitest-reporters'
29
29
  spec.add_development_dependency 'rake', '~> 10.0'
30
30
  end
@@ -5,6 +5,29 @@ require 'dragonfly_libvips/version'
5
5
  require 'vips'
6
6
 
7
7
  module DragonflyLibvips
8
+ class UnsupportedFormat < RuntimeError; end
9
+ class UnsupportedOutputormat < RuntimeError; end
10
+
8
11
  CMYK_PROFILE_PATH = File.expand_path('../vendor/cmyk.icm', __dir__)
9
12
  EPROFILE_PATH = File.expand_path('../vendor/sRGB_v4_ICC_preference.icc', __dir__)
13
+
14
+ SUPPORTED_FORMATS = begin
15
+ output = `vips -l | grep -i ForeignLoad`
16
+ output.scan(/\.(\w{1,4})/).flatten.sort.uniq
17
+ end
18
+
19
+ SUPPORTED_OUTPUT_FORMATS = begin
20
+ output = `vips -l | grep -i ForeignSave`
21
+ output.scan(/\.(\w{1,4})/).flatten.sort.uniq
22
+ end - %w[
23
+ csv
24
+ mat
25
+ pbm
26
+ pfm
27
+ pgm
28
+ ppm
29
+ v
30
+ vips
31
+ webp
32
+ ]
10
33
  end
@@ -6,18 +6,22 @@ module DragonflyLibvips
6
6
  DPI = 300
7
7
 
8
8
  def call(content)
9
+ return {} unless SUPPORTED_FORMATS.include?(content.ext)
10
+
9
11
  input_options = {}
10
- input_options[:access] = :sequential
11
- input_options[:autorotate] = true if content.mime_type == 'image/jpeg'
12
- input_options[:dpi] = DPI if content.mime_type == 'application/pdf'
12
+ input_options['access'] = 'sequential'
13
+ input_options['autorotate'] = true if content.mime_type == 'image/jpeg'
14
+ input_options['dpi'] = DPI if content.mime_type == 'application/pdf'
13
15
 
14
16
  img = ::Vips::Image.new_from_file(content.path, input_options)
15
17
 
16
- width, height = img.width, img.height
17
- xres, yres = img.xres, img.yres
18
+ width = img.width
19
+ height = img.height
20
+ xres = img.xres
21
+ yres = img.yres
18
22
 
19
23
  {
20
- 'format' => content.ext.try(:downcase),
24
+ 'format' => content.ext.to_s,
21
25
  'width' => width,
22
26
  'height' => height,
23
27
  'xres' => xres,
@@ -1,5 +1,6 @@
1
1
  require 'dragonfly_libvips/analysers/image_properties'
2
2
  require 'dragonfly_libvips/processors/encode'
3
+ require 'dragonfly_libvips/processors/extract_area'
3
4
  require 'dragonfly_libvips/processors/rotate'
4
5
  require 'dragonfly_libvips/processors/thumb'
5
6
 
@@ -9,43 +10,22 @@ module DragonflyLibvips
9
10
  # Analysers
10
11
  app.add_analyser :image_properties, DragonflyLibvips::Analysers::ImageProperties.new
11
12
 
12
- app.add_analyser :width do |content|
13
- content.analyse(:image_properties)['width']
13
+ %w[ width
14
+ height
15
+ xres
16
+ yres
17
+ format
18
+ ].each do |name|
19
+ app.add_analyser(name) { |c| c.analyse(:image_properties)[name] }
14
20
  end
15
21
 
16
- app.add_analyser :height do |content|
17
- content.analyse(:image_properties)['height']
18
- end
19
-
20
- app.add_analyser :xres do |content|
21
- content.analyse(:image_properties)['xres']
22
- end
23
-
24
- app.add_analyser :yres do |content|
25
- content.analyse(:image_properties)['yres']
26
- end
27
-
28
- app.add_analyser :format do |content|
29
- content.analyse(:image_properties)['format']
30
- end
31
-
32
- app.add_analyser :aspect_ratio do |content|
33
- attrs = content.analyse(:image_properties)
34
- attrs['width'].to_f / attrs['height']
35
- end
36
-
37
- app.add_analyser :portrait do |content|
38
- attrs = content.analyse(:image_properties)
39
- attrs['width'] <= attrs['height']
40
- end
41
-
42
- app.add_analyser :landscape do |content|
43
- !content.analyse(:portrait)
44
- end
22
+ app.add_analyser(:aspect_ratio) { |c| c.analyse(:width).to_f / c.analyse(:height).to_f }
23
+ app.add_analyser(:portrait) { |c| c.analyse(:aspect_ratio) < 1.0 }
24
+ app.add_analyser(:landscape) { |c| !c.analyse(:portrait) }
45
25
 
46
- app.add_analyser :image do |content|
26
+ app.add_analyser(:image) do |c|
47
27
  begin
48
- content.analyse(:image_properties).key?('format')
28
+ c.analyse(:image_properties).key?('format')
49
29
  rescue ::Vips::Error
50
30
  false
51
31
  end
@@ -58,6 +38,7 @@ module DragonflyLibvips
58
38
 
59
39
  # Processors
60
40
  app.add_processor :encode, Processors::Encode.new
41
+ app.add_processor :extract_area, Processors::ExtractArea.new
61
42
  app.add_processor :thumb, Processors::Thumb.new
62
43
  app.add_processor :rotate, Processors::Rotate.new
63
44
  end
@@ -1,10 +1,24 @@
1
- require 'active_support/core_ext/hash'
2
-
3
1
  module DragonflyLibvips
4
2
  module Processors
5
3
  class Encode
4
+ FORMATS_WITHOUT_PROFILE_SUPPORT = %w[dz webp hdr]
5
+
6
6
  def call(content, format, options = {})
7
- options = options.deep_stringify_keys
7
+ raise UnsupportedFormat unless SUPPORTED_FORMATS.include?(content.ext)
8
+
9
+ format = format.to_s
10
+ format = 'tif' if format == 'tiff'
11
+ format = 'jpg' if format == 'jpeg'
12
+
13
+ raise UnsupportedOutputFormat unless SUPPORTED_OUTPUT_FORMATS.include?(format)
14
+
15
+ if content.mime_type == Rack::Mime.mime_type(".#{format}")
16
+ content.ext ||= format
17
+ content.meta['format'] = format
18
+ return
19
+ end
20
+
21
+ options = options.each_with_object({}) { |(k, v), memo| memo[k.to_s] = v } # stringify keys
8
22
 
9
23
  input_options = options.fetch('input_options', {})
10
24
  output_options = options.fetch('output_options', {})
@@ -13,12 +27,18 @@ module DragonflyLibvips
13
27
  if content.mime_type == 'image/jpeg'
14
28
  input_options['autorotate'] = true unless input_options.has_key?('autorotate')
15
29
  end
16
- output_options['profile'] ||= DragonflyLibvips::EPROFILE_PATH
30
+
31
+ output_options['profile'] ||= EPROFILE_PATH
32
+ output_options.delete('profile') if FORMATS_WITHOUT_PROFILE_SUPPORT.include?(format)
17
33
 
18
34
  require 'vips'
19
35
  img = ::Vips::Image.new_from_file(content.path, input_options)
20
36
 
21
- content.update(img.write_to_buffer(".#{format}", output_options), 'format' => format)
37
+ content.update(
38
+ img.write_to_buffer(".#{format}", output_options),
39
+ 'name' => "temp.#{format}",
40
+ 'format' => format
41
+ )
22
42
  content.ext = format
23
43
  end
24
44
 
@@ -0,0 +1,39 @@
1
+ module DragonflyLibvips
2
+ module Processors
3
+ class ExtractArea
4
+ def call(content, x, y, width, height, options = {})
5
+ raise UnsupportedFormat unless SUPPORTED_FORMATS.include?(content.ext)
6
+
7
+ options = options.each_with_object({}) { |(k, v), memo| memo[k.to_s] = v } # stringify keys
8
+ format = options.fetch('format', content.ext)
9
+
10
+ input_options = options.fetch('input_options', {})
11
+ output_options = options.fetch('output_options', {})
12
+
13
+ # input_options['access'] ||= 'sequential'
14
+ if content.mime_type == 'image/jpeg'
15
+ input_options['autorotate'] = true unless input_options.has_key?('autorotate')
16
+ end
17
+ output_options['profile'] ||= EPROFILE_PATH
18
+
19
+ require 'vips'
20
+ img = ::Vips::Image.new_from_file(content.path, input_options)
21
+
22
+ img = img.extract_area(x, y, width, height)
23
+
24
+ content.update(
25
+ img.write_to_buffer(".#{format}", output_options),
26
+ 'name' => "temp.#{format}",
27
+ 'format' => format
28
+ )
29
+ content.ext = format
30
+ end
31
+
32
+ def update_url(url_attributes, _, _, _, _, options = {})
33
+ options = options.each_with_object({}) { |(k, v), memo| memo[k.to_s] = v } # stringify keys
34
+ return unless format = options.fetch('format', nil)
35
+ url_attributes.ext = format
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,37 +1,38 @@
1
- require 'active_support/core_ext/hash'
2
-
3
1
  module DragonflyLibvips
4
2
  module Processors
5
3
  class Rotate
6
4
  def call(content, rotate, options = {})
7
- options = options.deep_stringify_keys
5
+ raise UnsupportedFormat unless SUPPORTED_FORMATS.include?(content.ext)
8
6
 
7
+ options = options.each_with_object({}) { |(k, v), memo| memo[k.to_s] = v } # stringify keys
9
8
  format = options.fetch('format', content.ext)
10
9
 
11
10
  input_options = options.fetch('input_options', {})
12
11
  output_options = options.fetch('output_options', {})
13
12
 
14
- input_options['access'] ||= 'sequential'
13
+ # input_options['access'] ||= 'sequential'
15
14
  if content.mime_type == 'image/jpeg'
16
15
  input_options['autorotate'] = true unless input_options.has_key?('autorotate')
17
16
  end
18
- output_options['profile'] ||= DragonflyLibvips::EPROFILE_PATH
17
+ output_options['profile'] ||= EPROFILE_PATH
19
18
 
20
19
  require 'vips'
21
20
  img = ::Vips::Image.new_from_file(content.path, input_options)
22
21
 
23
22
  img = img.rot("d#{rotate}")
24
23
 
25
- content.update(img.write_to_buffer(".#{format}", output_options), 'format' => format)
24
+ content.update(
25
+ img.write_to_buffer(".#{format}", output_options),
26
+ 'name' => "temp.#{format}",
27
+ 'format' => format
28
+ )
26
29
  content.ext = format
27
30
  end
28
31
 
29
32
  def update_url(url_attributes, _, options = {})
30
- options = options.deep_stringify_keys
31
-
32
- if format = options.fetch('format', nil)
33
- url_attributes.ext = format
34
- end
33
+ options = options.each_with_object({}) { |(k, v), memo| memo[k.to_s] = v } # stringify keys
34
+ return unless format = options.fetch('format', nil)
35
+ url_attributes.ext = format
35
36
  end
36
37
  end
37
38
  end
@@ -1,4 +1,3 @@
1
- require 'active_support/core_ext/hash'
2
1
  require 'dragonfly_libvips/dimensions'
3
2
  require 'vips'
4
3
 
@@ -10,56 +9,63 @@ module DragonflyLibvips
10
9
  DPI = 300
11
10
 
12
11
  def call(content, geometry, options = {})
13
- options = options.deep_symbolize_keys
12
+ raise UnsupportedFormat unless SUPPORTED_FORMATS.include?(content.ext)
13
+
14
+ options = options.each_with_object({}) { |(k, v), memo| memo[k.to_s] = v } # stringify keys
14
15
 
15
16
  filename = content.path
16
- format = options.fetch(:format, content.ext)
17
+ format = options.fetch('format', content.ext).to_s
17
18
 
18
- input_options = options.fetch(:input_options, {})
19
- input_options[:access] = input_options.fetch(:access, 'sequential')
20
- input_options[:autorotate] = input_options.fetch(:autorotate, true) if content.mime_type == 'image/jpeg'
19
+ input_options = options.fetch('input_options', {})
20
+ input_options['access'] = input_options.fetch('access', 'sequential')
21
+ input_options['autorotate'] = input_options.fetch('autorotate', true) if content.mime_type == 'image/jpeg'
21
22
 
22
23
  if content.mime_type == 'application/pdf'
23
- input_options[:dpi] = input_options.fetch(:dpi, DPI) if content.mime_type == 'application/pdf'
24
- input_options[:page] = input_options.fetch(:page, 0) if content.mime_type == 'application/pdf'
24
+ input_options['dpi'] = input_options.fetch('dpi', DPI) if content.mime_type == 'application/pdf'
25
+ input_options['page'] = input_options.fetch('page', 0) if content.mime_type == 'application/pdf'
25
26
  else
26
- input_options.delete(:page)
27
- input_options.delete(:dpi)
27
+ input_options.delete('page')
28
+ input_options.delete('dpi')
28
29
  end
29
30
 
30
- output_options = options.fetch(:output_options, {})
31
- output_options[:profile] = input_options.fetch(:profile, DragonflyLibvips::EPROFILE_PATH)
31
+ output_options = options.fetch('output_options', {})
32
+ output_options['profile'] = input_options.fetch('profile', EPROFILE_PATH)
32
33
 
34
+ input_options = input_options.each_with_object({}) { |(k, v), memo| memo[k.to_sym] = v } # symbolize
33
35
  img = ::Vips::Image.new_from_file(filename, input_options)
34
36
 
35
37
  dimensions = case geometry
36
- when RESIZE_GEOMETRY then DragonflyLibvips::Dimensions.call(geometry, img.width, img.height)
38
+ when RESIZE_GEOMETRY then Dimensions.call(geometry, img.width, img.height)
37
39
  else raise ArgumentError, "Didn't recognise the geometry string: #{geometry}"
38
40
  end
39
41
 
40
- thumbnail_options = options.fetch(:thumbnail_options, {})
41
- thumbnail_options[:auto_rotate] = input_options.fetch(:autorotate, true) if content.mime_type == 'image/jpeg'
42
- thumbnail_options[:height] = thumbnail_options.fetch(:height, dimensions.height.ceil)
43
- thumbnail_options[:import_profile] = DragonflyLibvips::CMYK_PROFILE_PATH if img.get('interpretation') == :cmyk
44
- thumbnail_options[:size] ||= case geometry
42
+ thumbnail_options = options.fetch('thumbnail_options', {})
43
+ thumbnail_options['auto_rotate'] = input_options.fetch('autorotate', true) if content.mime_type == 'image/jpeg'
44
+ thumbnail_options['height'] = thumbnail_options.fetch('height', dimensions.height.ceil)
45
+ thumbnail_options['import_profile'] = CMYK_PROFILE_PATH if img.get('interpretation') == :cmyk
46
+ thumbnail_options['size'] ||= case geometry
45
47
  when />\z/ then :down # do_not_resize_if_image_smaller_than_requested
46
48
  when /<\z/ then :up # do_not_resize_if_image_larger_than_requested
47
49
  else :both
48
50
  end
49
51
 
50
52
  filename += "[page=#{input_options[:page]}]" if content.mime_type == 'application/pdf'
53
+
54
+ thumbnail_options = thumbnail_options.each_with_object({}) { |(k, v), memo| memo[k.to_sym] = v } # symbolize
51
55
  thumb = ::Vips::Image.thumbnail(filename, dimensions.width.ceil, thumbnail_options)
52
56
 
53
- content.update(thumb.write_to_buffer(".#{format}", output_options), 'format' => format)
57
+ content.update(
58
+ thumb.write_to_buffer(".#{format}", output_options),
59
+ 'name' => "temp.#{format}",
60
+ 'format' => format
61
+ )
54
62
  content.ext = format
55
63
  end
56
64
 
57
65
  def update_url(url_attributes, _, options = {})
58
- options = options.deep_symbolize_keys
59
-
60
- if format = options.fetch(:format, nil)
61
- url_attributes.ext = format
62
- end
66
+ options = options.each_with_object({}) { |(k, v), memo| memo[k.to_s] = v } # stringify keys
67
+ return unless format = options.fetch('format', nil)
68
+ url_attributes.ext = format
63
69
  end
64
70
  end
65
71
  end
@@ -1,3 +1,3 @@
1
1
  module DragonflyLibvips
2
- VERSION = '2.1.3'.freeze
2
+ VERSION = '2.2.0'.freeze
3
3
  end
Binary file
Binary file
File without changes
File without changes
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0"?>
2
+ <svg version="1.1" id="sample_id" xmlns="http://www.w3.org/2000/svg" width="200" height="300" viewBox="0 0 200 300">
3
+ <rect fill="none" stroke="#000000" x="0" y="0" width="200" height="300" />
4
+ </svg>
Binary file
File without changes
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: 2.1.3
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Celizna
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-19 00:00:00.000000000 Z
11
+ date: 2018-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dragonfly
@@ -44,20 +44,6 @@ dependencies:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: 2.0.6
47
- - !ruby/object:Gem::Dependency
48
- name: activesupport
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: '4.0'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '4.0'
61
47
  - !ruby/object:Gem::Dependency
62
48
  name: bundler
63
49
  requirement: !ruby/object:Gem::Requirement
@@ -114,6 +100,20 @@ dependencies:
114
100
  - - "~>"
115
101
  - !ruby/object:Gem::Version
116
102
  version: '5.0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: minitest-reporters
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: rake
119
119
  requirement: !ruby/object:Gem::Requirement
@@ -151,13 +151,18 @@ files:
151
151
  - lib/dragonfly_libvips/dimensions.rb
152
152
  - lib/dragonfly_libvips/plugin.rb
153
153
  - lib/dragonfly_libvips/processors/encode.rb
154
+ - lib/dragonfly_libvips/processors/extract_area.rb
154
155
  - lib/dragonfly_libvips/processors/rotate.rb
155
156
  - lib/dragonfly_libvips/processors/thumb.rb
156
157
  - lib/dragonfly_libvips/version.rb
157
- - samples/beach.png
158
- - samples/cmyk.jpg
159
- - samples/landscape_beach.png
160
- - samples/memo.pdf
158
+ - samples/landscape_sample.png
159
+ - samples/sample.gif
160
+ - samples/sample.jpg
161
+ - samples/sample.pdf
162
+ - samples/sample.png
163
+ - samples/sample.svg
164
+ - samples/sample.tif
165
+ - samples/sample_cmyk.jpg
161
166
  - samples/white pixel.png
162
167
  - vendor/cmyk.icm
163
168
  - vendor/sRGB_v4_ICC_preference.icc
@@ -181,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
186
  version: '0'
182
187
  requirements: []
183
188
  rubyforge_project:
184
- rubygems_version: 2.5.2
189
+ rubygems_version: 2.7.6
185
190
  signing_key:
186
191
  specification_version: 4
187
192
  summary: Dragonfly analysers and processors for libvips image processing library.