format_parser 0.3.4 → 0.3.5
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 +4 -4
- data/README.md +3 -0
- data/lib/format_parser/version.rb +1 -1
- data/lib/parsers/jpeg_parser.rb +7 -3
- data/spec/parsers/jpeg_parser_spec.rb +26 -10
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bc81ce8d64a13fe43d93e7fe24b17ea484e64a4
|
4
|
+
data.tar.gz: 8d559f3fdd9f0a814b479ade6997a3d6bd7dd4a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d555a6eb131261f3c9bb2418e1c7acf12dfb07de4d3b2af65a8135247b8900ddb8e1c60bc6c0d6985ac3c2bfdfc81c0902396e21436a4b4b7a5fd6eee7dcf4d7
|
7
|
+
data.tar.gz: c955511e375429fb93068220a1b7d70875a7e71760f14652fd191ad8d1a8b5c20ff20258cda030468acfc53cde070436b8515fe9af7e0f757dbe2c2d66722a03
|
data/README.md
CHANGED
@@ -148,6 +148,9 @@ Therefore we adapt the following approaches:
|
|
148
148
|
|
149
149
|
Unless specified otherwise in this section the fixture files are MIT licensed and from the FastImage and Dimensions projects.
|
150
150
|
|
151
|
+
### JPEG
|
152
|
+
- `divergent_pixel_dimensions_exif.jpg` is used with permission from LiveKom GmbH
|
153
|
+
|
151
154
|
### AIFF
|
152
155
|
- fixture.aiff was created by one of the project maintainers and is MIT licensed
|
153
156
|
|
data/lib/parsers/jpeg_parser.rb
CHANGED
@@ -15,6 +15,7 @@ class FormatParser::JPEGParser
|
|
15
15
|
@width = nil
|
16
16
|
@height = nil
|
17
17
|
@orientation = nil
|
18
|
+
@intrinsics = {}
|
18
19
|
scan
|
19
20
|
end
|
20
21
|
|
@@ -51,7 +52,8 @@ class FormatParser::JPEGParser
|
|
51
52
|
format: :jpg,
|
52
53
|
width_px: @width,
|
53
54
|
height_px: @height,
|
54
|
-
orientation: @orientation
|
55
|
+
orientation: @orientation,
|
56
|
+
intrinsics: @intrinsics,
|
55
57
|
)
|
56
58
|
end
|
57
59
|
end
|
@@ -90,8 +92,10 @@ class FormatParser::JPEGParser
|
|
90
92
|
if scanner.scan_image_exif
|
91
93
|
@exif_output = scanner.exif_data
|
92
94
|
@orientation = scanner.orientation unless scanner.orientation.nil?
|
93
|
-
@
|
94
|
-
@
|
95
|
+
@intrinsics[:exif_pixel_x_dimension] = @exif_output.pixel_x_dimension
|
96
|
+
@intrinsics[:exif_pixel_y_dimension] = @exif_output.pixel_y_dimension
|
97
|
+
@width = scanner.width
|
98
|
+
@height = scanner.height
|
95
99
|
end
|
96
100
|
end
|
97
101
|
end
|
@@ -18,18 +18,34 @@ describe FormatParser::JPEGParser do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
|
21
|
+
it 'is able to parse JPEG examples with EXIF tags containing different orientations from FastImage' do
|
22
22
|
Dir.glob(fixtures_dir + '/exif-orientation-testimages/jpg/*.jpg').each do |jpeg_path|
|
23
|
-
|
24
|
-
|
25
|
-
expect(parsed).not_to be_nil
|
23
|
+
parsed = subject.call(File.open(jpeg_path, 'rb'))
|
24
|
+
expect(parsed).not_to be_nil
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
expect(parsed.height_px).to be_kind_of(Integer)
|
31
|
-
expect(parsed.height_px).to be > 0
|
32
|
-
end
|
26
|
+
expect(parsed.orientation).to be_kind_of(Symbol)
|
27
|
+
expect(parsed.width_px).to be > 0
|
28
|
+
expect(parsed.height_px).to be > 0
|
33
29
|
end
|
30
|
+
|
31
|
+
bottom_left_path = fixtures_dir + '/exif-orientation-testimages/jpg/bottom_left.jpg'
|
32
|
+
parsed = subject.call(File.open(bottom_left_path, 'rb'))
|
33
|
+
expect(parsed.orientation).to eq(:bottom_left)
|
34
|
+
expect(parsed.width_px).to eq(1240)
|
35
|
+
expect(parsed.height_px).to eq(1754)
|
36
|
+
|
37
|
+
top_right_path = fixtures_dir + '/exif-orientation-testimages/jpg/right_bottom.jpg'
|
38
|
+
parsed = subject.call(File.open(top_right_path, 'rb'))
|
39
|
+
expect(parsed.orientation).to eq(:right_bottom)
|
40
|
+
expect(parsed.width_px).to eq(1754)
|
41
|
+
expect(parsed.height_px).to eq(1240)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'gives true pixel dimensions priority over pixel dimensions in EXIF tags' do
|
45
|
+
jpeg_path = fixtures_dir + '/JPEG/divergent_pixel_dimensions_exif.jpg'
|
46
|
+
result = subject.call(File.open(jpeg_path, 'rb'))
|
47
|
+
expect(result.width_px).to eq(1920)
|
48
|
+
expect(result.height_px).to eq(1280)
|
49
|
+
expect(result.intrinsics).to eq(exif_pixel_x_dimension: 8214, exif_pixel_y_dimension: 5476)
|
34
50
|
end
|
35
51
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: format_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Noah Berman
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-03-
|
12
|
+
date: 2018-03-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ks
|
@@ -230,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
230
230
|
version: '0'
|
231
231
|
requirements: []
|
232
232
|
rubyforge_project:
|
233
|
-
rubygems_version: 2.
|
233
|
+
rubygems_version: 2.5.2
|
234
234
|
signing_key:
|
235
235
|
specification_version: 4
|
236
236
|
summary: A library for efficient parsing of file metadata
|