image_size 3.1.0 → 3.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
2
  SHA256:
3
- metadata.gz: b0873a78a9fb9f84f07d0389071379dda288330bd38ee7516b442ffde85a3af8
4
- data.tar.gz: 0b9fffd2311efa1c24379686821289951a4cd2ec895c27325148a886a24ff57b
3
+ metadata.gz: f086d46fca698649fed0a23adca9dc67e1fa3317d9f3c209f1fe7f07fcd2cb6b
4
+ data.tar.gz: ff8f5243aadd37691eb7dabaa7e4b0d3b6fb212aba286a10d86165dc174eabff
5
5
  SHA512:
6
- metadata.gz: f6dede99002af9b9fc32f9776e42019079abcd846370c06b2aeee812a73c9ec46dcb6c703d1ae454f807d532c1d6b740aabb999892a6ef610cd17311f6a9a7f0
7
- data.tar.gz: 819d8a3b7797b1f12b59eb608ffdeda9338314a923ca54711143832685853ed36b9ae8d165fcfa242ce4e1d72aecd5a03bd11714aa7aee3b464722ea8bb4688f
6
+ metadata.gz: 6ff23aa12846de6eaeb9a8ae02cde4a152f891e863056cf901732ef1c6cd1a580befab1cb62037feed500906901018cf8cdb64b63dd6538c07f0b84c5e8ce80e
7
+ data.tar.gz: fe6d488afbac72d4a8c16e3d1457c9ae3acf82b87ac9bd6df34e4077f0a0166c47862eac796f71e34084bb7c1314e49f79963eba41ad73de935232b2f2c35bd1
data/CHANGELOG.markdown CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ## unreleased
4
4
 
5
+ ## v3.2.0 (2022-11-03)
6
+
7
+ * Support `EMF` images [#21](https://github.com/toy/image_size/pull/21) [@opoudjis](https://github.com/opoudjis)
8
+
5
9
  ## v3.1.0 (2022-09-17)
6
10
 
7
11
  * Document experimental fetching from http server [#18](https://github.com/toy/image_size/issues/18) [@toy](https://github.com/toy)
data/README.markdown CHANGED
@@ -5,7 +5,7 @@
5
5
  # image_size
6
6
 
7
7
  Measure image size using pure Ruby.
8
- Formats: `apng`, `bmp`, `cur`, `gif`, `ico`, `j2c`, `jp2`, `jpeg`, `jpx`, `mng`, `pam`, `pbm`, `pcx`, `pgm`, `png`, `ppm`, `psd`, `svg`, `swf`, `tiff`, `webp`, `xbm`, `xpm`.
8
+ Formats: `apng`, `bmp`, `cur`, `emf`, `gif`, `ico`, `j2c`, `jp2`, `jpeg`, `jpx`, `mng`, `pam`, `pbm`, `pcx`, `pgm`, `png`, `ppm`, `psd`, `svg`, `swf`, `tiff`, `webp`, `xbm`, `xpm`.
9
9
 
10
10
  ## Installation
11
11
 
data/image_size.gemspec CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'image_size'
5
- s.version = '3.1.0'
5
+ s.version = '3.2.0'
6
6
  s.summary = %q{Measure image size using pure Ruby}
7
- s.description = %q{Measure following file dimensions: apng, bmp, cur, gif, ico, j2c, jp2, jpeg, jpx, mng, pam, pbm, pcx, pgm, png, ppm, psd, svg, swf, tiff, webp, xbm, xpm}
7
+ s.description = %q{Measure following file dimensions: apng, bmp, cur, emf, gif, ico, j2c, jp2, jpeg, jpx, mng, pam, pbm, pcx, pgm, png, ppm, psd, svg, swf, tiff, webp, xbm, xpm}
8
8
  s.homepage = "https://github.com/toy/#{s.name}"
9
9
  s.authors = ['Keisuke Minami', 'Ivan Kuchin']
10
10
  s.license = 'Ruby'
data/lib/image_size.rb CHANGED
@@ -95,6 +95,7 @@ private
95
95
  when head[0, 4] == "\0\0\2\0" then :cur
96
96
  when head[0, 12] == "\0\0\0\fjP \r\n\207\n" then detect_jpeg2000_type(ir)
97
97
  when head[0, 4] == "\377O\377Q" then :j2c
98
+ when head[0, 4] == "\1\0\0\0" && head[40, 4] == ' EMF' then :emf
98
99
  end
99
100
  end
100
101
 
@@ -374,4 +375,20 @@ private
374
375
  def size_of_j2c(ir)
375
376
  ir.unpack(8, 8, 'NN')
376
377
  end
378
+
379
+ EMF_UMAX = 256**4
380
+ EMF_SMAX = EMF_UMAX / 2
381
+
382
+ def size_of_emf(ir)
383
+ left, top, right, bottom =
384
+ if RUBY_VERSION < '1.9'
385
+ ir.unpack(24, 16, 'V*').map{ |u| u < EMF_SMAX ? u : u - EMF_UMAX }
386
+ else
387
+ ir.unpack(24, 16, 'L<*')
388
+ end
389
+ dpi = self.class.dpi
390
+ [right - left + 1, bottom - top + 1].map do |n|
391
+ (n.to_f * dpi / 2540).round
392
+ end
393
+ end
377
394
  end
@@ -19,6 +19,26 @@ describe ImageSize do
19
19
  @server.finish
20
20
  end
21
21
 
22
+ def supported_formats
23
+ ImageSize.private_instance_methods.map{ |name| name[/\Asize_of_(.*)\z/, 1] }.compact.sort
24
+ end
25
+
26
+ describe 'README' do
27
+ let(:readme){ File.read('README.markdown') }
28
+
29
+ it 'lists all supported formats' do
30
+ expect(readme[/^Formats: .*$/]).to eq("Formats: #{supported_formats.map{ |format| "`#{format}`" }.join(', ')}.")
31
+ end
32
+ end
33
+
34
+ describe 'gemspec' do
35
+ let(:gemspec){ Gem::Specification.load('image_size.gemspec') }
36
+
37
+ it 'lists all supported formats in description' do
38
+ expect(gemspec.description).to eq("Measure following file dimensions: #{supported_formats.join(', ')}")
39
+ end
40
+ end
41
+
22
42
  Dir['spec/**/*'].each do |path|
23
43
  next unless File.file?(path)
24
44
 
Binary file
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: image_size
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keisuke Minami
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-09-16 00:00:00.000000000 Z
12
+ date: 2022-11-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -53,8 +53,9 @@ dependencies:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '2.0'
56
- description: 'Measure following file dimensions: apng, bmp, cur, gif, ico, j2c, jp2,
57
- jpeg, jpx, mng, pam, pbm, pcx, pgm, png, ppm, psd, svg, swf, tiff, webp, xbm, xpm'
56
+ description: 'Measure following file dimensions: apng, bmp, cur, emf, gif, ico, j2c,
57
+ jp2, jpeg, jpx, mng, pam, pbm, pcx, pgm, png, ppm, psd, svg, swf, tiff, webp, xbm,
58
+ xpm'
58
59
  email:
59
60
  executables: []
60
61
  extensions: []
@@ -86,6 +87,8 @@ files:
86
87
  - spec/images/bmp/v3-bottom2top.42x50.bmp
87
88
  - spec/images/bmp/v3-top2bottom.42x50.bmp
88
89
  - spec/images/cur/32x256.cur
90
+ - spec/images/emf/74x77.emf
91
+ - spec/images/emf/77x77.emf
89
92
  - spec/images/empty
90
93
  - spec/images/gif/668x481.gif
91
94
  - spec/images/ico/32x256.ico
@@ -127,7 +130,7 @@ licenses:
127
130
  metadata:
128
131
  bug_tracker_uri: https://github.com/toy/image_size/issues
129
132
  changelog_uri: https://github.com/toy/image_size/blob/master/CHANGELOG.markdown
130
- documentation_uri: https://www.rubydoc.info/gems/image_size/3.1.0
133
+ documentation_uri: https://www.rubydoc.info/gems/image_size/3.2.0
131
134
  source_code_uri: https://github.com/toy/image_size
132
135
  post_install_message:
133
136
  rdoc_options: []
@@ -157,6 +160,8 @@ test_files:
157
160
  - spec/images/bmp/v3-bottom2top.42x50.bmp
158
161
  - spec/images/bmp/v3-top2bottom.42x50.bmp
159
162
  - spec/images/cur/32x256.cur
163
+ - spec/images/emf/74x77.emf
164
+ - spec/images/emf/77x77.emf
160
165
  - spec/images/empty
161
166
  - spec/images/gif/668x481.gif
162
167
  - spec/images/ico/32x256.ico