leeh-mini_exiftool 1.6.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 +15 -0
- data/COPYING +502 -0
- data/Changelog +159 -0
- data/README.rdoc +50 -0
- data/Rakefile +23 -0
- data/lib/mini_exiftool.rb +464 -0
- data/test/data/Bad_PreviewIFD.jpg +0 -0
- data/test/data/Canon.jpg +0 -0
- data/test/data/INFORMATION +3 -0
- data/test/data/test.jpg +0 -0
- data/test/data/test.jpg.json +106 -0
- data/test/data/test_coordinates.jpg +0 -0
- data/test/data/test_special_dates.jpg +0 -0
- data/test/helpers_for_test.rb +28 -0
- data/test/test_bad_preview_ifd.rb +29 -0
- data/test/test_class_methods.rb +80 -0
- data/test/test_composite.rb +19 -0
- data/test/test_dumping.rb +80 -0
- data/test/test_from_hash.rb +22 -0
- data/test/test_read.rb +53 -0
- data/test/test_read_coordinates.rb +18 -0
- data/test/test_read_numerical.rb +33 -0
- data/test/test_save.rb +85 -0
- data/test/test_special.rb +42 -0
- data/test/test_special_dates.rb +52 -0
- data/test/test_write.rb +161 -0
- metadata +85 -0
Binary file
|
data/test/data/Canon.jpg
ADDED
Binary file
|
data/test/data/test.jpg
ADDED
Binary file
|
@@ -0,0 +1,106 @@
|
|
1
|
+
[{
|
2
|
+
"SourceFile": "test/data/test.jpg",
|
3
|
+
"ExifToolVersion": 8.77,
|
4
|
+
"FileName": "test.jpg",
|
5
|
+
"Directory": "test/data",
|
6
|
+
"FileSize": "46 kB",
|
7
|
+
"FileModifyDate": "2012:07:05 20:28:24-07:00",
|
8
|
+
"FilePermissions": "rw-r--r--",
|
9
|
+
"FileType": "JPEG",
|
10
|
+
"MIMEType": "image/jpeg",
|
11
|
+
"JFIFVersion": 1.01,
|
12
|
+
"ExifByteOrder": "Big-endian (Motorola, MM)",
|
13
|
+
"ImageDescription": "KONICA MINOLTA DIGITAL CAMERA",
|
14
|
+
"Make": "KONICA MINOLTA",
|
15
|
+
"Model": "DYNAX 7D",
|
16
|
+
"Orientation": "Horizontal (normal)",
|
17
|
+
"XResolution": 72,
|
18
|
+
"YResolution": 72,
|
19
|
+
"ResolutionUnit": "inches",
|
20
|
+
"Software": "DYNAX 7D v1.10",
|
21
|
+
"ModifyDate": "2005:09:13 20:08:50",
|
22
|
+
"YCbCrPositioning": "Centered",
|
23
|
+
"ExposureTime": "1/60",
|
24
|
+
"FNumber": 9.5,
|
25
|
+
"ExposureProgram": "Program AE",
|
26
|
+
"ISO": 400,
|
27
|
+
"ExifVersion": "0221",
|
28
|
+
"DateTimeOriginal": "2005:09:13 20:08:50",
|
29
|
+
"CreateDate": "2005:09:13 20:08:50",
|
30
|
+
"ComponentsConfiguration": "Y, Cb, Cr, -",
|
31
|
+
"BrightnessValue": 4.5,
|
32
|
+
"ExposureCompensation": -1,
|
33
|
+
"MaxApertureValue": 4.5,
|
34
|
+
"MeteringMode": "Multi-segment",
|
35
|
+
"LightSource": "Unknown",
|
36
|
+
"Flash": "Off, Did not fire",
|
37
|
+
"FocalLength": "75.0 mm",
|
38
|
+
"SubjectArea": "1504 1000 256 304",
|
39
|
+
"MakerNoteVersion": "MLT0",
|
40
|
+
"MinoltaImageSize": "Large",
|
41
|
+
"WhiteBalance": "Auto",
|
42
|
+
"FocusMode": "AF-A",
|
43
|
+
"AFPoints": "Center",
|
44
|
+
"FlashMode": "Normal",
|
45
|
+
"ISOSetting": 400,
|
46
|
+
"FreeMemoryCardImages": 202,
|
47
|
+
"HueAdjustment": 0,
|
48
|
+
"Rotation": "Horizontal (normal)",
|
49
|
+
"ImageNumber": 6,
|
50
|
+
"NoiseReduction": "Unknown (2)",
|
51
|
+
"ImageNumber2": 50,
|
52
|
+
"ZoneMatchingOn": "Off",
|
53
|
+
"CompressedImageSize": 1598477,
|
54
|
+
"PreviewImageStart": 39152,
|
55
|
+
"PreviewImageLength": 0,
|
56
|
+
"SceneMode": "Standard",
|
57
|
+
"ColorMode": "Natural sRGB",
|
58
|
+
"MinoltaQuality": "Fine",
|
59
|
+
"FlashExposureComp": 0,
|
60
|
+
"Teleconverter": "None",
|
61
|
+
"ImageStabilization": "On",
|
62
|
+
"ZoneMatching": "ISO Setting Used",
|
63
|
+
"ColorTemperature": 0,
|
64
|
+
"LensType": "Minolta AF 28-135mm F4-4.5 or Sigma Lens",
|
65
|
+
"UserComment": "",
|
66
|
+
"FlashpixVersion": "0100",
|
67
|
+
"ColorSpace": "sRGB",
|
68
|
+
"ExifImageWidth": 3008,
|
69
|
+
"ExifImageHeight": 2000,
|
70
|
+
"CustomRendered": "Normal",
|
71
|
+
"ExposureMode": "Auto",
|
72
|
+
"DigitalZoomRatio": 0,
|
73
|
+
"FocalLengthIn35mmFormat": "112 mm",
|
74
|
+
"SceneCaptureType": "Standard",
|
75
|
+
"GainControl": "Low gain up",
|
76
|
+
"Contrast": "Normal",
|
77
|
+
"Saturation": "Normal",
|
78
|
+
"Sharpness": "Normal",
|
79
|
+
"PrintIMVersion": "0300",
|
80
|
+
"Compression": "JPEG (old-style)",
|
81
|
+
"ThumbnailOffset": 39274,
|
82
|
+
"ThumbnailLength": 1820,
|
83
|
+
"CurrentIPTCDigest": "dd8d51d28ddf04f08f870e5ff2f64d01",
|
84
|
+
"Keywords": ["Orange","Rot"],
|
85
|
+
"ApplicationRecordVersion": 4,
|
86
|
+
"SupplementalCategories": "Natur",
|
87
|
+
"XMPToolkit": "Image::ExifTool 7.03",
|
88
|
+
"Title": "Abenddämmerung",
|
89
|
+
"ImageWidth": 300,
|
90
|
+
"ImageHeight": 199,
|
91
|
+
"EncodingProcess": "Baseline DCT, Huffman coding",
|
92
|
+
"BitsPerSample": 8,
|
93
|
+
"ColorComponents": 3,
|
94
|
+
"YCbCrSubSampling": "YCbCr4:2:0 (2 2)",
|
95
|
+
"Aperture": 9.5,
|
96
|
+
"ImageSize": "300x199",
|
97
|
+
"LensID": "Minolta AF 28-135mm F4-4.5",
|
98
|
+
"ScaleFactor35efl": 1.5,
|
99
|
+
"ShutterSpeed": "1/60",
|
100
|
+
"ThumbnailImage": "(Binary data 1820 bytes)",
|
101
|
+
"CircleOfConfusion": "0.020 mm",
|
102
|
+
"FOV": "18.3 deg",
|
103
|
+
"FocalLength35efl": "75.0 mm (35 mm equivalent: 112.0 mm)",
|
104
|
+
"HyperfocalDistance": "29.43 m",
|
105
|
+
"LightValue": 10.4
|
106
|
+
}]
|
Binary file
|
Binary file
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -- encoding: utf-8 --
|
2
|
+
require 'mini_exiftool'
|
3
|
+
require 'test/unit'
|
4
|
+
require 'fileutils'
|
5
|
+
require 'tempfile'
|
6
|
+
begin
|
7
|
+
require 'turn'
|
8
|
+
rescue LoadError
|
9
|
+
begin
|
10
|
+
require 'rubygems'
|
11
|
+
require 'turn'
|
12
|
+
rescue LoadError
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
include Test::Unit
|
17
|
+
|
18
|
+
module TempfileTest
|
19
|
+
def setup
|
20
|
+
@temp_file = Tempfile.new('test')
|
21
|
+
@temp_filename = @temp_file.path
|
22
|
+
@data_dir = File.dirname(__FILE__) + '/data'
|
23
|
+
end
|
24
|
+
|
25
|
+
def teardown
|
26
|
+
@temp_file.close
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -- encoding: utf-8 --
|
2
|
+
require 'helpers_for_test'
|
3
|
+
|
4
|
+
class TestBadPreviewIFD < TestCase
|
5
|
+
|
6
|
+
include TempfileTest
|
7
|
+
|
8
|
+
def setup
|
9
|
+
super
|
10
|
+
@org_filename = @data_dir + '/Bad_PreviewIFD.jpg'
|
11
|
+
FileUtils.cp @org_filename, @temp_filename
|
12
|
+
@bad_preview_ifd = MiniExiftool.new @temp_filename
|
13
|
+
end
|
14
|
+
|
15
|
+
# Feature request rubyforge [#29587]
|
16
|
+
# Thanks to Michael Grove for reporting
|
17
|
+
def test_m_option
|
18
|
+
title = 'anything'
|
19
|
+
@bad_preview_ifd.title = title
|
20
|
+
assert_equal false, @bad_preview_ifd.save, '-m option seems to be not neccessary'
|
21
|
+
@bad_preview_ifd.reload
|
22
|
+
@bad_preview_ifd.title = title
|
23
|
+
@bad_preview_ifd.ignore_minor_errors = true
|
24
|
+
assert_equal true, @bad_preview_ifd.save, 'Error while saving'
|
25
|
+
@bad_preview_ifd.reload
|
26
|
+
assert_equal title, @bad_preview_ifd.title
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# -- encoding: utf-8 --
|
2
|
+
require 'helpers_for_test'
|
3
|
+
|
4
|
+
class TestClassMethods < TestCase
|
5
|
+
|
6
|
+
def test_new
|
7
|
+
assert_nothing_raised do
|
8
|
+
@mini_exiftool = MiniExiftool.new
|
9
|
+
end
|
10
|
+
assert_equal nil, @mini_exiftool.filename
|
11
|
+
assert_nothing_raised do
|
12
|
+
MiniExiftool.new nil
|
13
|
+
end
|
14
|
+
assert_raises MiniExiftool::Error do
|
15
|
+
MiniExiftool.new false
|
16
|
+
end
|
17
|
+
assert_raises MiniExiftool::Error do
|
18
|
+
MiniExiftool.new ''
|
19
|
+
end
|
20
|
+
assert_raises MiniExiftool::Error do
|
21
|
+
MiniExiftool.new 'not_existing_file'
|
22
|
+
end
|
23
|
+
assert_raises MiniExiftool::Error do
|
24
|
+
MiniExiftool.new '.' # directory
|
25
|
+
end
|
26
|
+
begin
|
27
|
+
MiniExiftool.new 'not_existing_file'
|
28
|
+
rescue MiniExiftool::Error => e
|
29
|
+
assert_match /File 'not_existing_file' does not exist/, e.message
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_command
|
34
|
+
cmd = MiniExiftool.command
|
35
|
+
assert_equal 'exiftool', cmd
|
36
|
+
MiniExiftool.command = 'non_existend'
|
37
|
+
assert_equal 'non_existend', MiniExiftool.command
|
38
|
+
assert_raises MiniExiftool::Error do
|
39
|
+
met = MiniExiftool.new(File.join(File.dirname(__FILE__),
|
40
|
+
'data/test.jpg'))
|
41
|
+
end
|
42
|
+
MiniExiftool.command = cmd
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_opts
|
46
|
+
opts = MiniExiftool.opts
|
47
|
+
assert_kind_of Hash, opts
|
48
|
+
begin
|
49
|
+
org = MiniExiftool.opts[:composite]
|
50
|
+
met1 = MiniExiftool.new
|
51
|
+
MiniExiftool.opts[:composite] = !org
|
52
|
+
met2 = MiniExiftool.new
|
53
|
+
MiniExiftool.opts[:composite] = org
|
54
|
+
met3 = MiniExiftool.new
|
55
|
+
assert_equal org, met1.composite
|
56
|
+
assert_equal !org, met2.composite
|
57
|
+
assert_equal org, met1.composite
|
58
|
+
ensure
|
59
|
+
MiniExiftool.opts[:composite] = org
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_all_tags
|
64
|
+
all_tags = MiniExiftool.all_tags
|
65
|
+
assert all_tags.include?('ISO')
|
66
|
+
assert all_tags.include?('OriginalFilename')
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_writable_tags
|
70
|
+
w_tags = MiniExiftool.writable_tags
|
71
|
+
assert w_tags.include?('ISO')
|
72
|
+
assert_equal false, w_tags.include?('xxxxxx')
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_exiftool_version
|
76
|
+
v = MiniExiftool.exiftool_version
|
77
|
+
assert_match /\A\d+\.\d+\z/, v
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -- encoding: utf-8 --
|
2
|
+
require 'helpers_for_test'
|
3
|
+
|
4
|
+
class TestComposite < TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@data_dir = File.dirname(__FILE__) + '/data'
|
8
|
+
@filename_test = @data_dir + '/test.jpg'
|
9
|
+
@mini_exiftool = MiniExiftool.new @filename_test, :composite => false
|
10
|
+
@mini_exiftool_c = MiniExiftool.new @filename_test
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_composite_tags
|
14
|
+
assert_equal false, @mini_exiftool.tags.include?('Aperture')
|
15
|
+
assert_equal true, @mini_exiftool_c.tags.include?('Aperture')
|
16
|
+
assert_equal 9.5, @mini_exiftool_c['Aperture']
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
# -- encoding: utf-8 --
|
2
|
+
require 'helpers_for_test'
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
class TestDumping < TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@data_dir = File.dirname(__FILE__) + '/data'
|
9
|
+
@filename_test = @data_dir + '/test.jpg'
|
10
|
+
@mini_exiftool = MiniExiftool.new @filename_test
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_to_hash
|
14
|
+
hash = @mini_exiftool.to_hash
|
15
|
+
assert_equal Hash, hash.class
|
16
|
+
assert_equal @mini_exiftool.tags.size, hash.size, 'Size of Hash is not correct.'
|
17
|
+
assert_not_nil hash['ExifToolVersion'], 'Original name of exiftool tag is not preserved.'
|
18
|
+
all_ok = true
|
19
|
+
diffenent_tag = ''
|
20
|
+
hash.each do |k,v|
|
21
|
+
unless @mini_exiftool[k] == v
|
22
|
+
all_ok = false
|
23
|
+
diffenent_tag = k
|
24
|
+
break
|
25
|
+
end
|
26
|
+
end
|
27
|
+
assert all_ok, "Tag #{diffenent_tag}: expected: #{@mini_exiftool[diffenent_tag]}, actual: v"
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_from_hash
|
31
|
+
hash = @mini_exiftool.to_hash
|
32
|
+
mini_exiftool_new = MiniExiftool.from_hash hash
|
33
|
+
assert_equal MiniExiftool, mini_exiftool_new.class
|
34
|
+
assert_equal @mini_exiftool.tags.size, mini_exiftool_new.tags.size
|
35
|
+
all_ok = true
|
36
|
+
diffenent_tag = ''
|
37
|
+
@mini_exiftool.tags.each do |tag|
|
38
|
+
unless @mini_exiftool[tag] == mini_exiftool_new[tag]
|
39
|
+
all_ok = false
|
40
|
+
diffenent_tag = tag
|
41
|
+
break
|
42
|
+
end
|
43
|
+
end
|
44
|
+
assert all_ok, "Tag #{diffenent_tag}: expected: #{@mini_exiftool[diffenent_tag]}, actual: #{mini_exiftool_new[diffenent_tag]}"
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_to_yaml
|
49
|
+
hash = @mini_exiftool.to_hash
|
50
|
+
yaml = @mini_exiftool.to_yaml
|
51
|
+
assert_equal hash, YAML.load(yaml)
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_from_yaml
|
55
|
+
hash = @mini_exiftool.to_hash
|
56
|
+
yaml = hash.to_yaml
|
57
|
+
mini_exiftool_new = MiniExiftool.from_yaml(yaml)
|
58
|
+
assert_equal MiniExiftool, mini_exiftool_new.class
|
59
|
+
assert_equal hash, mini_exiftool_new.to_hash
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_heuristics_for_restoring_composite
|
63
|
+
standard = @mini_exiftool.to_hash
|
64
|
+
no_composite = MiniExiftool.new(@filename_test, :composite => false).to_hash
|
65
|
+
assert_equal true, MiniExiftool.from_hash(standard).composite
|
66
|
+
assert_equal false, MiniExiftool.from_hash(no_composite).composite
|
67
|
+
assert_equal true, MiniExiftool.from_yaml(standard.to_yaml).composite
|
68
|
+
assert_equal false, MiniExiftool.from_yaml(no_composite.to_yaml).composite
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_heuristics_for_restoring_numerical
|
72
|
+
standard = @mini_exiftool.to_hash
|
73
|
+
numerical = MiniExiftool.new(@filename_test, :numerical => true).to_hash
|
74
|
+
assert_equal false, MiniExiftool.from_hash(standard).numerical
|
75
|
+
assert_equal true, MiniExiftool.from_hash(numerical).numerical
|
76
|
+
assert_equal false, MiniExiftool.from_yaml(standard.to_yaml).numerical
|
77
|
+
assert_equal true, MiniExiftool.from_yaml(numerical.to_yaml).numerical
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'helpers_for_test'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
class TestFromHash < TestCase
|
5
|
+
def setup
|
6
|
+
@data_dir = File.dirname(__FILE__) + '/data'
|
7
|
+
hash_data = JSON.parse(File.read( @data_dir + '/test.jpg.json')).first
|
8
|
+
@mini_exiftool = MiniExiftool.from_hash hash_data
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_conversion
|
12
|
+
assert_kind_of String, @mini_exiftool.model
|
13
|
+
assert_kind_of Time, @mini_exiftool['DateTimeOriginal']
|
14
|
+
assert_kind_of Float, @mini_exiftool['MaxApertureValue']
|
15
|
+
assert_kind_of String, @mini_exiftool.flash
|
16
|
+
assert_kind_of Fixnum, @mini_exiftool['ExposureCompensation']
|
17
|
+
assert_kind_of String, (@mini_exiftool['SubjectLocation'] || @mini_exiftool['SubjectArea'])
|
18
|
+
assert_kind_of Array, @mini_exiftool['Keywords']
|
19
|
+
assert_kind_of String, @mini_exiftool['SupplementalCategories']
|
20
|
+
assert_kind_of Rational, @mini_exiftool.shutterspeed
|
21
|
+
end
|
22
|
+
end
|
data/test/test_read.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
# -- encoding: utf-8 --
|
2
|
+
require 'helpers_for_test'
|
3
|
+
|
4
|
+
class TestRead < TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@data_dir = File.dirname(__FILE__) + '/data'
|
8
|
+
@filename_test = @data_dir + '/test.jpg'
|
9
|
+
@mini_exiftool = MiniExiftool.new @filename_test
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_access
|
13
|
+
assert_equal 'DYNAX 7D', @mini_exiftool['Model']
|
14
|
+
assert_equal 'MLT0', @mini_exiftool['maker_note_version']
|
15
|
+
assert_equal 'MLT0', @mini_exiftool[:MakerNoteVersion]
|
16
|
+
assert_equal 'MLT0', @mini_exiftool[:maker_note_version]
|
17
|
+
assert_equal 'MLT0', @mini_exiftool.maker_note_version
|
18
|
+
assert_equal 400, @mini_exiftool.iso
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_tags
|
22
|
+
assert @mini_exiftool.tags.include?('FileSize')
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_conversion
|
26
|
+
assert_kind_of String, @mini_exiftool.model
|
27
|
+
assert_kind_of Time, @mini_exiftool['DateTimeOriginal']
|
28
|
+
assert_kind_of Float, @mini_exiftool['MaxApertureValue']
|
29
|
+
assert_kind_of String, @mini_exiftool.flash
|
30
|
+
assert_kind_of Fixnum, @mini_exiftool['ExposureCompensation']
|
31
|
+
assert_kind_of String, (@mini_exiftool['SubjectLocation'] || @mini_exiftool['SubjectArea'])
|
32
|
+
assert_kind_of Array, @mini_exiftool['Keywords']
|
33
|
+
assert_kind_of String, @mini_exiftool['SupplementalCategories']
|
34
|
+
assert_kind_of Rational, @mini_exiftool.shutterspeed
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_list_tags
|
38
|
+
assert_equal ['Orange', 'Rot'], @mini_exiftool['Keywords']
|
39
|
+
assert_equal 'Natur', @mini_exiftool['SupplementalCategories']
|
40
|
+
assert_equal ['Natur'], Array(@mini_exiftool['SupplementalCategories'])
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_encoding_conversion
|
44
|
+
@mini_exiftool_converted = MiniExiftool.new @filename_test, :convert_encoding => true
|
45
|
+
assert_equal 'Abenddämmerung', @mini_exiftool.title
|
46
|
+
converted = "Abendd\344mmerung"
|
47
|
+
if converted.respond_to?(:force_encoding)
|
48
|
+
converted.force_encoding('ISO-8859-1')
|
49
|
+
end
|
50
|
+
assert_equal converted, @mini_exiftool_converted.title
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# -- encoding: utf-8 --
|
2
|
+
require 'helpers_for_test'
|
3
|
+
|
4
|
+
class TestReadCoordinates < TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@data_dir = File.dirname(__FILE__) + '/data'
|
8
|
+
@filename_test = @data_dir + '/test_coordinates.jpg'
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_access_coordinates
|
12
|
+
mini_exiftool_coord = MiniExiftool.new @filename_test, :coord_format => "%+.6f"
|
13
|
+
assert_equal '+43.653167', mini_exiftool_coord['GPSLatitude']
|
14
|
+
assert_equal '-79.373167', mini_exiftool_coord['GPSLongitude']
|
15
|
+
assert_equal '+43.653167, -79.373167', mini_exiftool_coord['GPSPosition']
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|