dragonfly_libvips 2.1.3 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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.