-
Notifications
You must be signed in to change notification settings - Fork 286
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multi-Page TIFF support to extract DJI Drohnes Meta-Sensor-Data #1460
Comments
Exiv2 does not support multi-page tiff and there is no plan to implement it.
There are two tiff parsers in Exiv2. TiffVisitor is the primary parser and used by -pa. The printStructure() parser is used by I have been writing a book Image Metadata and Exiv2 Architecture which contains a program tvisitor.cpp to explain how Exiv2 works. You don't appear to have provided your tiff file, so I can't run tvisitor on your file. It's very likely that tvisitor shows the information of interest. However, tvisitor isn't a replacement for Exiv2. Its purpose is, in 4000 lines of code, to explain how to parse images and metadata. https://clanmills.com/exiv2/book/ I've been trying for years to retire from Exiv2 and set a goal of my 70th birthday which was last week. Sadly, I don't think anybody will volunteer to maintain Exiv2. My final contribution will be to finish the the book and to ship v0.27.4 on 2021-05-22. |
Happy Birthday! And thank you for all your efforts. I will have at the source code. Iterating over all pages is possible. So iterating over all pages is working. And meta can be read in general So the steps would be So I think it might be possible exiv2. Maybe you can help to figure out, where are good points / examples in your source code to do this. Cheers, Martin |
Happy birthday. A bit late from my side though. I will need some more time to contribute more. Can you list all the open source programs, which use exiv2? Maybe this way we can start a thread on pixls.us... |
There's a tiffsplit utility in the libtiff sample applications. Have a look at: https://dev.exiv2.org/issues/1124. It's quite possible that a fairly simple script using tiffsplit and exiv2 will deliver what you want without getting into the Exiv2 C++ code. The void TiffImage::printStructure(std::ostream& out, Exiv2::PrintStructureOption option,int depth) A general solution to multi-page parsing in Exiv2 is a considerable undertaking. The Exiv2 metadata names are of the form Exif.Group.TagName and would require modification to handle page numbers. For example: Exif.Group.TagName[page_number] and the user would need to know how many pages are in the file. What is the metadata inheritance model in a multi-page tiff? I don't know and that needs to be researched. Additionally, there are other multi-page formats such as GIF. So, providing multi-page support in Exiv2 is a big project and that's why it hasn't been done in the past. In my book, I mention this under Future Development Projects: https://clanmills.com/exiv2/book/#future A long standing project for Exiv2 is a unified metadata container. There is an implementation of this in the SVN repository. Currently we have three containers for Exif, Iptc and Xmp. This is clumsy. We also have a restriction of one image per file. Perhaps both restrictions have a common solution. So, I encourage you to look at a script that uses tiffsplit before getting into the Exiv2 C++ code. And I encourage you to discuss this on the chatserver and others may be interesting in working with you. https://matrix.to/#/#exiv2-chat:matrix.org |
I'm very pleased to say that there has been a marked increase in the number of contributors over the last six months. If folks want to develop Exiv2, they will receive my enthusiastic support. However, I want out of the day-to-day effort required to maintain and develop Exiv2. I've made my contribution. |
@heckflosse and @marsie321 Thank you for the birthday greetings. Life is good. I've never been happier. A list of projects that use Exiv2? I don't have that information. For sure, obvious ones are Gimp, darktable, GwenView, Gnome Desktop and digiKam. However I know there are many more. Somebody who knows apt internal could generate a list of entities which have libexiv2 in their dependencies. I've personally found working on metadata to be as interesting as anything I encountered in my professional life. And I've worked on compilers, debuggers, interpreters, graphics, printing and many other system level components which run in user space (not kernel). It makes sense for the community to work with me while I am alive and well. If they don't, my book is the hitch-hikers guide to metadata. |
rmills@ubuntu:~$ apt-cache rdepends libexiv2-27
libexiv2-27
Reverse Depends:
libgexiv2-2
libmyth
viewnior
pinot
phototonic
pdf2djvu
nomacs
luminance-hdr
libqgis-analysis3.10.4
libkf5kexiv2-15.0.0
libkf5filemetadata-bin
libextractor3
krita
krename
kphotoalbum
hugin-tools
hugin
hdrmerge
gwenview
gthumb
gpscorrelate-gui
gpscorrelate
gimp-lensfun
gerbera
geeqie
ffdiaporama
exiv2
digikam-private-libs
darktable
libexiv2-dev
libexiv2-dev
libexiv2-dev |
Thank you Robin, The link was exactly what I was looking for. And I hope I will find some time to have a deeper look into your source code and your book. I find a solution, I will post it here. |
Can you attach a test file to this issue, please. I might look at this. And somebody else might be want to investigate this. Let's get everybody on the same page. If you test file isn't too large, I might deal with multi-page tiff files in my book and add your file to the test suite for the code in the book. |
Sure, I can upload some files. The file can be viewed with ImageJ, Irfanview or XnView. |
Thanks. I'll look at those files. I think I'll add a section to the book about multi-page tiff files. In the book, I discuss quite a number of matters which Exiv2 does not support. For example: BigTiff, ISOBMFF (CR3, AVIF, HEIC), JPEG>64k, ICC/XMP support in GIF, PNG Textual Information and other matters that don't immediately come to mind. Discussing something in the book is usually quite easy and a pre-cursor to full-scale development in Exiv2. I remain hopeful that Exiv2 won't die with my retirement and the book has been written to help future maintainers and developers. While the primary focus of the book concerns Exiv2 implementation for maintenance, I hope discussion of other metadata features will inspire future development. |
Something wrong with the upload of DJI_0017.zip. Perhaps you have to wait for the file to upload before pushing "Comment". Can you try again to attach the file to this issue, please. |
I just uploaded the file again. I hope it will work. Thank you all your efforts in the past years! |
It has successfully arrived this time, thanks very much. It's been worth looking at this. I've discovered interesting bugs in tvisitor.cpp. Bugs that I didn't have in If you're happy, I'd like to add DJI_0005.TIFF to the files/ directory in the code in the book (and it'll be parsed by the book's test harness). My aim is to update the section in the book that deals with TIFF to discuss multi-page tiff files. I'd be fun to have an option on tvisitor to create a GPX with the data in your image. You can upload the GPX to a mapping app (Strava, Google Maps) to create a map of the path of your drone. I'm unlikely to spent time on that. |
You can add the files to book, thank you. And yes the idea with a GPX track is nice, and it should be easy to implement, after the problems with the tvisitor.cpp / multi-page tiffs are fixed. |
Thanks for agreeing to your files being included in the code base for the book. I've already fixed the issues with tvisitor.cpp/multi-page support and updated that code. Tomorrow I'm add a discussion about multi-page tiff file to the book. I might implement GPX as it would demonstrate deriving |
This post is related to multi-page support e.g.
https://dev.exiv2.org/issues/1124
#15
Hi we also have some multi-page tiffs. And I am looking into exiftool and exiv2 to export exif info for each page of a multi-page tiff and afterwards write / update exif info.
Does v 0.27 or v 0.28 support multi-page, and if yes how can I access a single page.
exiv2 -pav -g 2 DJI_0018.TIFF | grep -i page # is not working
Warning: Directory Image3 has an unexpected next pointer; ignored.
Exif.Image.PageNumber Short 2 0 0
Exif.Thumbnail.PageNumber Short 2 1 0
Exif.Image2.PageNumber Short 2 2 0
Exif.Image3.PageNumber Short 2 3 0
Thank you for any help.
Please find attached some Info / Debug for the tiffs.
exiv2 -pR DJI_0018.TIFF > DJI_0018.TIFF.exiv2-pR
see attachment
DJI_0018.TIFF.exiv2-pR.txt
exiv2 -pS DJI_0018.TIFF | grep -i PageNumber | wc -l
3535 # this is correct, there are 3535 pages.
DJI_0018.TIFF.exiv2-pR.txt
exiftool -v3 -ee -a DJI_0018.TIFF
ExifToolVersion = 12.14
FileName = DJI_0018.TIFF
Directory = .
FileSize = 2329576074
FileModifyDate = 1611350267
FileAccessDate = 1611350031
FileInodeChangeDate = 1611350267
FilePermissions = 33188
FileType = TIFF
FileTypeExtension = TIF
MIMEType = image/tiff
ExifByteOrder = II
| 0) ImageWidth = 640
| - Tag 0x0100 (2 bytes, int16u[1]):
| aa87a: 80 02 [..]
| 1) ImageHeight = 512
| - Tag 0x0101 (2 bytes, int16u[1]):
| aa886: 00 02 [..]
| 2) BitsPerSample = 16
| - Tag 0x0102 (2 bytes, int16u[1]):
| aa892: 10 00 [..]
| 3) Compression = 1
| - Tag 0x0103 (2 bytes, int16u[1]):
| aa89e: 01 00 [..]
| 4) PhotometricInterpretation = 1
| - Tag 0x0106 (2 bytes, int16u[1]):
| aa8aa: 01 00 [..]
| 5) Make = DJI
| - Tag 0x010f (4 bytes, string[4]):
| aa8b6: 44 4a 49 00 [DJI.]
| 6) Model = XT2
| - Tag 0x0110 (4 bytes, string[4]):
| aa8c2: 58 54 32 00 [XT2.]
| 7) StripOffsets = 8
| - Tag 0x0111 (4 bytes, int32u[1]):
| aa8ce: 08 00 00 00 [....]
| 8) SamplesPerPixel = 1
| - Tag 0x0115 (2 bytes, int16u[1]):
| aa8da: 01 00 [..]
| 9) RowsPerStrip = 512
| - Tag 0x0116 (2 bytes, int16u[1]):
| aa8e6: 00 02 [..]
| 10) StripByteCounts = 655360
| - Tag 0x0117 (4 bytes, int32u[1]):
| aa8f2: 00 00 0a 00 [....]
| 11) XResolution = 1 (1/1)
| - Tag 0x011a (8 bytes, rational64u[1]):
| aa996: 01 00 00 00 01 00 00 00 [........]
| 12) YResolution = 1 (1/1)
| - Tag 0x011b (8 bytes, rational64u[1]):
| aa99e: 01 00 00 00 01 00 00 00 [........]
| 13) PlanarConfiguration = 1
| - Tag 0x011c (2 bytes, int16u[1]):
| aa916: 01 00 [..]
| 14) ResolutionUnit = 1
| - Tag 0x0128 (2 bytes, int16u[1]):
| aa922: 01 00 [..]
| 15) PageNumber = 0 0
| - Tag 0x0129 (4 bytes, int16u[2]):
| aa92e: 00 00 00 00 [....]
| 16) Software = V06.02.20
| - Tag 0x0131 (10 bytes, string[10]):
| aa9a6: 56 30 36 2e 30 32 2e 32 30 00 [V06.02.20.]
| 17) SampleFormat = 1
| - Tag 0x0153 (2 bytes, int16u[1]):
| aa946: 01 00 [..]
| 18) ApplicationNotes (SubDirectory) -->
| - Tag 0x02bc (1349 bytes, int8u[1349] read as undef[1349]):
| aa9b0: 3c 3f 78 70 61 63 6b 65 74 20 62 65 67 69 6e 3d [..<x:xmpmeta x]
| aa9f0: 6d 6c 6e 73 3a 78 3d 22 61 64 6f 62 65 3a 6e 73 [mlns:x="adobe:ns]
| [snip 1269 bytes]
| + [XMP directory, 1349 bytes]
| | About = DJI Meta Data
| | AbsoluteAltitude = 620.353088
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:AbsoluteAltitude'
| | RelativeAltitude = 50.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:RelativeAltitude'
| | GimbalRollDegree = 0.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalRollDegree'
| | GimbalYawDegree = -82.599998
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalYawDegree'
| | GimbalPitchDegree = -90.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalPitchDegree'
| | FlightRollDegree = -0.200000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightRollDegree'
| | FlightYawDegree = -55.700001
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightYawDegree'
| | FlightPitchDegree = 1.400000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightPitchDegree'
| | CamReverse = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:CamReverse'
| | GimbalReverse = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalReverse'
| | RtkFlag = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:RtkFlag'
| | [adding XMP-FLIR:TlinearGain]
| | TlinearGain = 0.40
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:TlinearGain'
| | [adding XMP-FLIR:BandName]
| | BandName = LWIR
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:BandName/rdf:Seq/rdf:li 10'
| | [adding XMP-FLIR:CentralWavelength]
| | CentralWavelength = 10000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:CentralWavelength/rdf:Seq/rdf:li 10'
| | [adding XMP-FLIR:WavelengthFWHM]
| | WavelengthFWHM = 4500
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:WavelengthFWHM/rdf:Seq/rdf:li 10'
| 19) ExifOffset (SubDirectory) -->
| - Tag 0x8769 (4 bytes, ifd[1]):
| aa95e: 6e 06 0a 00 [n...]
| + [ExifIFD directory with 9 entries]
| | 0) FNumber = 1.25 (1250/1000)
| | - Tag 0x829d (8 bytes, rational64u[1]):
| | a06e0: e2 04 00 00 e8 03 00 00 [........]
| | 1) DateTimeOriginal = 2021:01:20 14:26:40
| | - Tag 0x9003 (20 bytes, string[20]):
| | a06e8: 32 30 32 31 3a 30 31 3a 32 30 20 31 34 3a 32 36 [2021:01:20 14:26]
| | a06f8: 3a 34 30 00 [:40.]
| | 2) FocalLength = 19 (19/1)
| | - Tag 0x920a (8 bytes, rational64u[1]):
| | a06fc: 13 00 00 00 01 00 00 00 [........]
| | 3) ImageNumber = 0
| | - Tag 0x9211 (4 bytes, int32u[1]):
| | a069c: 00 00 00 00 [....]
| | 4) SubSecTimeOriginal = 13
| | - Tag 0x9291 (3 bytes, string[3]):
| | a06a8: 31 33 00 [13.]
| | 5) FocalPlaneXResolution = 3.84 (3840/1000)
| | - Tag 0xa20e (8 bytes, rational64u[1]):
| | a0704: 00 0f 00 00 e8 03 00 00 [........]
| | 6) FocalPlaneYResolution = 3.072 (3072/1000)
| | - Tag 0xa20f (8 bytes, rational64u[1]):
| | a070c: 00 0c 00 00 e8 03 00 00 [........]
| | 7) FocalPlaneResolutionUnit = 4
| | - Tag 0xa210 (2 bytes, int16u[1]):
| | a06cc: 04 00 [..]
| | 8) SensingMethod = 15
| | - Tag 0xa217 (2 bytes, int16u[1]):
| | a06d8: 0f 00 [..]
| 20) GPSInfo (SubDirectory) -->
| - Tag 0x8825 (4 bytes, ifd[1]):
| aa96a: 14 07 0a 00 [....]
| + [GPS directory with 7 entries]
| | 0) GPSLatitudeRef = N
| | - Tag 0x0001 (2 bytes, string[2]):
| | a071e: 4e 00 [N.]
| | 1) GPSLatitude = 48 4 31.321 (48/1 4/1 31321/1000)
| | - Tag 0x0002 (24 bytes, rational64u[3]):
| | a076e: 30 00 00 00 01 00 00 00 04 00 00 00 01 00 00 00 [0...............]
| | a077e: 59 7a 00 00 e8 03 00 00 [Yz......]
| | 2) GPSLongitudeRef = E
| | - Tag 0x0003 (2 bytes, string[2]):
| | a0736: 45 00 [E.]
| | 3) GPSLongitude = 11 38 30.191 (11/1 38/1 30191/1000)
| | - Tag 0x0004 (24 bytes, rational64u[3]):
| | a0786: 0b 00 00 00 01 00 00 00 26 00 00 00 01 00 00 00 [........&.......]
| | a0796: ef 75 00 00 e8 03 00 00 [.u......]
| | 4) GPSAltitudeRef = 0
| | - Tag 0x0005 (1 bytes, int8u[1]):
| | a074e: 00 [.]
| | 5) GPSAltitude = 620.353 (620353/1000)
| | - Tag 0x0006 (8 bytes, rational64u[1]):
| | a079e: 41 77 09 00 e8 03 00 00 [Aw......]
| | 6) GPSMapDatum = WGS-84
| | - Tag 0x0012 (7 bytes, string[7]):
| | a07a6: 57 47 53 2d 38 34 00 [WGS-84.]
| 21) InteropOffset (SubDirectory) -->
| - Tag 0xa005 (4 bytes, ifd[1]):
| aa976: ae 07 0a 00 [....]
| + [InteropIFD directory with 5 entries]
| | 0) InteropIndex = THM
| | - Tag 0x0001 (4 bytes, string[4]):
| | a07b8: 54 48 4d 00 [THM.]
| | 1) InteropVersion = 0100
| | - Tag 0x0002 (4 bytes, undef[4]):
| | a07c4: 30 31 30 30 [0100]
| | 2) RelatedImageFileFormat = TIFF
| | - Tag 0x1000 (5 bytes, string[5]):
| | a07f0: 54 49 46 46 00 [TIFF.]
| | 3) RelatedImageWidth = 160
| | - Tag 0x1001 (4 bytes, int32u[1]):
| | a07dc: a0 00 00 00 [....]
| | 4) RelatedImageHeight = 41082
| | - Tag 0x1002 (4 bytes, int32u[1]):
| | a07e8: 7a a0 00 00 [z...]
| 22) CameraSerialNumber = 297589
| - Tag 0xc62f (7 bytes, string[7]):
| aaef6: 32 39 37 35 38 39 00 [297589.]
| 23) FrameRate = 30 (30/1)
| - Tag 0xc764 (8 bytes, rational64s[1]):
| aaefe: 1e 00 00 00 01 00 00 00 [........]
| 0) ImageWidth = 640
| - Tag 0x0100 (2 bytes, int16u[1]):
| 14b6b6: 80 02 [..]
| 1) ImageHeight = 512
| - Tag 0x0101 (2 bytes, int16u[1]):
| 14b6c2: 00 02 [..]
| 2) BitsPerSample = 16
| - Tag 0x0102 (2 bytes, int16u[1]):
| 14b6ce: 10 00 [..]
| 3) Compression = 1
| - Tag 0x0103 (2 bytes, int16u[1]):
| 14b6da: 01 00 [..]
| 4) PhotometricInterpretation = 1
| - Tag 0x0106 (2 bytes, int16u[1]):
| 14b6e6: 01 00 [..]
| 5) Make = DJI
| - Tag 0x010f (4 bytes, string[4]):
| 14b6f2: 44 4a 49 00 [DJI.]
| 6) Model = XT2
| - Tag 0x0110 (4 bytes, string[4]):
| 14b6fe: 58 54 32 00 [XT2.]
| 7) StripOffsets = 700166
| - Tag 0x0111 (4 bytes, int32u[1]):
| 14b70a: 06 af 0a 00 [....]
| 8) SamplesPerPixel = 1
| - Tag 0x0115 (2 bytes, int16u[1]):
| 14b716: 01 00 [..]
| 9) RowsPerStrip = 512
| - Tag 0x0116 (2 bytes, int16u[1]):
| 14b722: 00 02 [..]
| 10) StripByteCounts = 655360
| - Tag 0x0117 (4 bytes, int32u[1]):
| 14b72e: 00 00 0a 00 [....]
| 11) XResolution = 1 (1/1)
| - Tag 0x011a (8 bytes, rational64u[1]):
| 14b7c6: 01 00 00 00 01 00 00 00 [........]
| 12) YResolution = 1 (1/1)
| - Tag 0x011b (8 bytes, rational64u[1]):
| 14b7ce: 01 00 00 00 01 00 00 00 [........]
| 13) PlanarConfiguration = 1
| - Tag 0x011c (2 bytes, int16u[1]):
| 14b752: 01 00 [..]
| 14) ResolutionUnit = 1
| - Tag 0x0128 (2 bytes, int16u[1]):
| 14b75e: 01 00 [..]
| 15) PageNumber = 1 0
| - Tag 0x0129 (4 bytes, int16u[2]):
| 14b76a: 01 00 00 00 [....]
| 16) Software = V06.02.20
| - Tag 0x0131 (10 bytes, string[10]):
| 14b7d6: 56 30 36 2e 30 32 2e 32 30 00 [V06.02.20.]
| 17) SampleFormat = 1
| - Tag 0x0153 (2 bytes, int16u[1]):
| 14b782: 01 00 [..]
| 18) ApplicationNotes (SubDirectory) -->
| - Tag 0x02bc (1349 bytes, int8u[1349] read as undef[1349]):
| 14b7e0: 3c 3f 78 70 61 63 6b 65 74 20 62 65 67 69 6e 3d [..<x:xmpmeta x]
| 14b820: 6d 6c 6e 73 3a 78 3d 22 61 64 6f 62 65 3a 6e 73 [mlns:x="adobe:ns]
| [snip 1269 bytes]
| + [XMP directory, 1349 bytes]
| | AbsoluteAltitude = 620.353088
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:AbsoluteAltitude'
| | RelativeAltitude = 50.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:RelativeAltitude'
| | GimbalRollDegree = 0.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalRollDegree'
| | GimbalYawDegree = -82.599998
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalYawDegree'
| | GimbalPitchDegree = -90.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalPitchDegree'
| | FlightRollDegree = -0.200000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightRollDegree'
| | FlightYawDegree = -55.700001
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightYawDegree'
| | FlightPitchDegree = 1.400000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightPitchDegree'
| | CamReverse = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:CamReverse'
| | GimbalReverse = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalReverse'
| | RtkFlag = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:RtkFlag'
| | TlinearGain = 0.40
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:TlinearGain'
| | BandName = LWIR
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:BandName/rdf:Seq/rdf:li 10'
| | CentralWavelength = 10000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:CentralWavelength/rdf:Seq/rdf:li 10'
| | WavelengthFWHM = 4500
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:WavelengthFWHM/rdf:Seq/rdf:li 10'
| 19) ExifOffset (SubDirectory) -->
| - Tag 0x8769 (4 bytes, ifd[1]):
| 14b79a: 6c b5 14 00 [l...]
| + [ExifIFD directory with 9 entries]
| | 0) FNumber = 1.25 (1250/1000)
| | - Tag 0x829d (8 bytes, rational64u[1]):
| | 14b5de: e2 04 00 00 e8 03 00 00 [........]
| | 1) DateTimeOriginal = 2021:01:20 14:26:40
| | - Tag 0x9003 (20 bytes, string[20]):
| | 14b5e6: 32 30 32 31 3a 30 31 3a 32 30 20 31 34 3a 32 36 [2021:01:20 14:26]
| | 14b5f6: 3a 34 30 00 [:40.]
| | 2) FocalLength = 19 (19/1)
| | - Tag 0x920a (8 bytes, rational64u[1]):
| | 14b5fa: 13 00 00 00 01 00 00 00 [........]
| | 3) ImageNumber = 0
| | - Tag 0x9211 (4 bytes, int32u[1]):
| | 14b59a: 00 00 00 00 [....]
| | 4) SubSecTimeOriginal = 15
| | - Tag 0x9291 (3 bytes, string[3]):
| | 14b5a6: 31 35 00 [15.]
| | 5) FocalPlaneXResolution = 3.84 (3840/1000)
| | - Tag 0xa20e (8 bytes, rational64u[1]):
| | 14b602: 00 0f 00 00 e8 03 00 00 [........]
| | 6) FocalPlaneYResolution = 3.072 (3072/1000)
| | - Tag 0xa20f (8 bytes, rational64u[1]):
| | 14b60a: 00 0c 00 00 e8 03 00 00 [........]
| | 7) FocalPlaneResolutionUnit = 4
| | - Tag 0xa210 (2 bytes, int16u[1]):
| | 14b5ca: 04 00 [..]
| | 8) SensingMethod = 15
| | - Tag 0xa217 (2 bytes, int16u[1]):
| | 14b5d6: 0f 00 [..]
| 20) GPSInfo (SubDirectory) -->
| - Tag 0x8825 (4 bytes, ifd[1]):
| 14b7a6: 12 b6 14 00 [....]
| + [GPS directory with 7 entries]
| | 0) GPSLatitudeRef = N
| | - Tag 0x0001 (2 bytes, string[2]):
| | 14b61c: 4e 00 [N.]
| | 1) GPSLatitude = 48 4 31.321 (48/1 4/1 31321/1000)
| | - Tag 0x0002 (24 bytes, rational64u[3]):
| | 14b66c: 30 00 00 00 01 00 00 00 04 00 00 00 01 00 00 00 [0...............]
| | 14b67c: 59 7a 00 00 e8 03 00 00 [Yz......]
| | 2) GPSLongitudeRef = E
| | - Tag 0x0003 (2 bytes, string[2]):
| | 14b634: 45 00 [E.]
| | 3) GPSLongitude = 11 38 30.191 (11/1 38/1 30191/1000)
| | - Tag 0x0004 (24 bytes, rational64u[3]):
| | 14b684: 0b 00 00 00 01 00 00 00 26 00 00 00 01 00 00 00 [........&.......]
| | 14b694: ef 75 00 00 e8 03 00 00 [.u......]
| | 4) GPSAltitudeRef = 0
| | - Tag 0x0005 (1 bytes, int8u[1]):
| | 14b64c: 00 [.]
| | 5) GPSAltitude = 620.353 (620353/1000)
| | - Tag 0x0006 (8 bytes, rational64u[1]):
| | 14b69c: 41 77 09 00 e8 03 00 00 [Aw......]
| | 6) GPSMapDatum = WGS-84
| | - Tag 0x0012 (7 bytes, string[7]):
| | 14b6a4: 57 47 53 2d 38 34 00 [WGS-84.]
| 21) CameraSerialNumber = 297589
| - Tag 0xc62f (7 bytes, string[7]):
| 14bd26: 32 39 37 35 38 39 00 [297589.]
| 22) FrameRate = 30 (30/1)
| - Tag 0xc764 (8 bytes, rational64s[1]):
| 14bd2e: 1e 00 00 00 01 00 00 00 [........]
| 0) ImageWidth = 640
| - Tag 0x0100 (2 bytes, int16u[1]):
| 1ec4e6: 80 02 [..]
| 1) ImageHeight = 512
| - Tag 0x0101 (2 bytes, int16u[1]):
| 1ec4f2: 00 02 [..]
| 2) BitsPerSample = 16
| - Tag 0x0102 (2 bytes, int16u[1]):
| 1ec4fe: 10 00 [..]
| 3) Compression = 1
| - Tag 0x0103 (2 bytes, int16u[1]):
| 1ec50a: 01 00 [..]
| 4) PhotometricInterpretation = 1
| - Tag 0x0106 (2 bytes, int16u[1]):
| 1ec516: 01 00 [..]
| 5) Make = DJI
| - Tag 0x010f (4 bytes, string[4]):
| 1ec522: 44 4a 49 00 [DJI.]
| 6) Model = XT2
| - Tag 0x0110 (4 bytes, string[4]):
| 1ec52e: 58 54 32 00 [XT2.]
| 7) StripOffsets = 1359158
| - Tag 0x0111 (4 bytes, int32u[1]):
| 1ec53a: 36 bd 14 00 [6...]
| 8) SamplesPerPixel = 1
| - Tag 0x0115 (2 bytes, int16u[1]):
| 1ec546: 01 00 [..]
| 9) RowsPerStrip = 512
| - Tag 0x0116 (2 bytes, int16u[1]):
| 1ec552: 00 02 [..]
| 10) StripByteCounts = 655360
| - Tag 0x0117 (4 bytes, int32u[1]):
| 1ec55e: 00 00 0a 00 [....]
| 11) XResolution = 1 (1/1)
| - Tag 0x011a (8 bytes, rational64u[1]):
| 1ec5f6: 01 00 00 00 01 00 00 00 [........]
| 12) YResolution = 1 (1/1)
| - Tag 0x011b (8 bytes, rational64u[1]):
| 1ec5fe: 01 00 00 00 01 00 00 00 [........]
| 13) PlanarConfiguration = 1
| - Tag 0x011c (2 bytes, int16u[1]):
| 1ec582: 01 00 [..]
| 14) ResolutionUnit = 1
| - Tag 0x0128 (2 bytes, int16u[1]):
| 1ec58e: 01 00 [..]
| 15) PageNumber = 2 0
| - Tag 0x0129 (4 bytes, int16u[2]):
| 1ec59a: 02 00 00 00 [....]
| 16) Software = V06.02.20
| - Tag 0x0131 (10 bytes, string[10]):
| 1ec606: 56 30 36 2e 30 32 2e 32 30 00 [V06.02.20.]
| 17) SampleFormat = 1
| - Tag 0x0153 (2 bytes, int16u[1]):
| 1ec5b2: 01 00 [..]
| 18) ApplicationNotes (SubDirectory) -->
| - Tag 0x02bc (1349 bytes, int8u[1349] read as undef[1349]):
| 1ec610: 3c 3f 78 70 61 63 6b 65 74 20 62 65 67 69 6e 3d [..<x:xmpmeta x]
| 1ec650: 6d 6c 6e 73 3a 78 3d 22 61 64 6f 62 65 3a 6e 73 [mlns:x="adobe:ns]
| [snip 1269 bytes]
| + [XMP directory, 1349 bytes]
| | AbsoluteAltitude = 620.353088
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:AbsoluteAltitude'
| | RelativeAltitude = 50.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:RelativeAltitude'
| | GimbalRollDegree = 0.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalRollDegree'
| | GimbalYawDegree = -82.599998
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalYawDegree'
| | GimbalPitchDegree = -90.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalPitchDegree'
| | FlightRollDegree = -0.200000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightRollDegree'
| | FlightYawDegree = -55.700001
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightYawDegree'
| | FlightPitchDegree = 1.400000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightPitchDegree'
| | CamReverse = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:CamReverse'
| | GimbalReverse = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalReverse'
| | RtkFlag = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:RtkFlag'
| | TlinearGain = 0.40
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:TlinearGain'
| | BandName = LWIR
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:BandName/rdf:Seq/rdf:li 10'
| | CentralWavelength = 10000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:CentralWavelength/rdf:Seq/rdf:li 10'
| | WavelengthFWHM = 4500
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:WavelengthFWHM/rdf:Seq/rdf:li 10'
| 19) ExifOffset (SubDirectory) -->
| - Tag 0x8769 (4 bytes, ifd[1]):
| 1ec5ca: 9c c3 1e 00 [....]
| + [ExifIFD directory with 9 entries]
| | 0) FNumber = 1.25 (1250/1000)
| | - Tag 0x829d (8 bytes, rational64u[1]):
| | 1ec40e: e2 04 00 00 e8 03 00 00 [........]
| | 1) DateTimeOriginal = 2021:01:20 14:26:40
| | - Tag 0x9003 (20 bytes, string[20]):
| | 1ec416: 32 30 32 31 3a 30 31 3a 32 30 20 31 34 3a 32 36 [2021:01:20 14:26]
| | 1ec426: 3a 34 30 00 [:40.]
| | 2) FocalLength = 19 (19/1)
| | - Tag 0x920a (8 bytes, rational64u[1]):
| | 1ec42a: 13 00 00 00 01 00 00 00 [........]
| | 3) ImageNumber = 0
| | - Tag 0x9211 (4 bytes, int32u[1]):
| | 1ec3ca: 00 00 00 00 [....]
| | 4) SubSecTimeOriginal = 18
| | - Tag 0x9291 (3 bytes, string[3]):
| | 1ec3d6: 31 38 00 [18.]
| | 5) FocalPlaneXResolution = 3.84 (3840/1000)
| | - Tag 0xa20e (8 bytes, rational64u[1]):
| | 1ec432: 00 0f 00 00 e8 03 00 00 [........]
| | 6) FocalPlaneYResolution = 3.072 (3072/1000)
| | - Tag 0xa20f (8 bytes, rational64u[1]):
| | 1ec43a: 00 0c 00 00 e8 03 00 00 [........]
| | 7) FocalPlaneResolutionUnit = 4
| | - Tag 0xa210 (2 bytes, int16u[1]):
| | 1ec3fa: 04 00 [..]
| | 8) SensingMethod = 15
| | - Tag 0xa217 (2 bytes, int16u[1]):
| | 1ec406: 0f 00 [..]
| 20) GPSInfo (SubDirectory) -->
| - Tag 0x8825 (4 bytes, ifd[1]):
| 1ec5d6: 42 c4 1e 00 [B...]
| + [GPS directory with 7 entries]
| | 0) GPSLatitudeRef = N
| | - Tag 0x0001 (2 bytes, string[2]):
| | 1ec44c: 4e 00 [N.]
| | 1) GPSLatitude = 48 4 31.321 (48/1 4/1 31321/1000)
| | - Tag 0x0002 (24 bytes, rational64u[3]):
| | 1ec49c: 30 00 00 00 01 00 00 00 04 00 00 00 01 00 00 00 [0...............]
| | 1ec4ac: 59 7a 00 00 e8 03 00 00 [Yz......]
| | 2) GPSLongitudeRef = E
| | - Tag 0x0003 (2 bytes, string[2]):
| | 1ec464: 45 00 [E.]
| | 3) GPSLongitude = 11 38 30.191 (11/1 38/1 30191/1000)
| | - Tag 0x0004 (24 bytes, rational64u[3]):
| | 1ec4b4: 0b 00 00 00 01 00 00 00 26 00 00 00 01 00 00 00 [........&.......]
| | 1ec4c4: ef 75 00 00 e8 03 00 00 [.u......]
| | 4) GPSAltitudeRef = 0
| | - Tag 0x0005 (1 bytes, int8u[1]):
| | 1ec47c: 00 [.]
| | 5) GPSAltitude = 620.353 (620353/1000)
| | - Tag 0x0006 (8 bytes, rational64u[1]):
| | 1ec4cc: 41 77 09 00 e8 03 00 00 [Aw......]
| | 6) GPSMapDatum = WGS-84
| | - Tag 0x0012 (7 bytes, string[7]):
| | 1ec4d4: 57 47 53 2d 38 34 00 [WGS-84.]
| 21) CameraSerialNumber = 297589
| - Tag 0xc62f (7 bytes, string[7]):
| 1ecb56: 32 39 37 35 38 39 00 [297589.]
| 22) FrameRate = 30 (30/1)
| - Tag 0xc764 (8 bytes, rational64s[1]):
| 1ecb5e: 1e 00 00 00 01 00 00 00 [........]
| 0) ImageWidth = 640
| - Tag 0x0100 (2 bytes, int16u[1]):
| 28d316: 80 02 [..]
| 1) ImageHeight = 512
| - Tag 0x0101 (2 bytes, int16u[1]):
| 28d322: 00 02 [..]
| 2) BitsPerSample = 16
| - Tag 0x0102 (2 bytes, int16u[1]):
| 28d32e: 10 00 [..]
| 3) Compression = 1
| - Tag 0x0103 (2 bytes, int16u[1]):
| 28d33a: 01 00 [..]
| 4) PhotometricInterpretation = 1
| - Tag 0x0106 (2 bytes, int16u[1]):
| 28d346: 01 00 [..]
| 5) Make = DJI
| - Tag 0x010f (4 bytes, string[4]):
| 28d352: 44 4a 49 00 [DJI.]
| 6) Model = XT2
| - Tag 0x0110 (4 bytes, string[4]):
| 28d35e: 58 54 32 00 [XT2.]
| 7) StripOffsets = 2018150
| - Tag 0x0111 (4 bytes, int32u[1]):
| 28d36a: 66 cb 1e 00 [f...]
| 8) SamplesPerPixel = 1
| - Tag 0x0115 (2 bytes, int16u[1]):
| 28d376: 01 00 [..]
| 9) RowsPerStrip = 512
| - Tag 0x0116 (2 bytes, int16u[1]):
| 28d382: 00 02 [..]
| 10) StripByteCounts = 655360
| - Tag 0x0117 (4 bytes, int32u[1]):
| 28d38e: 00 00 0a 00 [....]
| 11) XResolution = 1 (1/1)
| - Tag 0x011a (8 bytes, rational64u[1]):
| 28d426: 01 00 00 00 01 00 00 00 [........]
| 12) YResolution = 1 (1/1)
| - Tag 0x011b (8 bytes, rational64u[1]):
| 28d42e: 01 00 00 00 01 00 00 00 [........]
| 13) PlanarConfiguration = 1
| - Tag 0x011c (2 bytes, int16u[1]):
| 28d3b2: 01 00 [..]
| 14) ResolutionUnit = 1
| - Tag 0x0128 (2 bytes, int16u[1]):
| 28d3be: 01 00 [..]
| 15) PageNumber = 3 0
| - Tag 0x0129 (4 bytes, int16u[2]):
| 28d3ca: 03 00 00 00 [....]
| 16) Software = V06.02.20
| - Tag 0x0131 (10 bytes, string[10]):
| 28d436: 56 30 36 2e 30 32 2e 32 30 00 [V06.02.20.]
| 17) SampleFormat = 1
| - Tag 0x0153 (2 bytes, int16u[1]):
| 28d3e2: 01 00 [..]
| 18) ApplicationNotes (SubDirectory) -->
| - Tag 0x02bc (1349 bytes, int8u[1349] read as undef[1349]):
| 28d440: 3c 3f 78 70 61 63 6b 65 74 20 62 65 67 69 6e 3d [..<x:xmpmeta x]
| 28d480: 6d 6c 6e 73 3a 78 3d 22 61 64 6f 62 65 3a 6e 73 [mlns:x="adobe:ns]
| [snip 1269 bytes]
| + [XMP directory, 1349 bytes]
| | AbsoluteAltitude = 620.353088
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:AbsoluteAltitude'
| | RelativeAltitude = 50.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:RelativeAltitude'
| | GimbalRollDegree = 0.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalRollDegree'
| | GimbalYawDegree = -82.599998
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalYawDegree'
| | GimbalPitchDegree = -90.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalPitchDegree'
| | FlightRollDegree = -0.200000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightRollDegree'
| | FlightYawDegree = -55.700001
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightYawDegree'
| | FlightPitchDegree = 1.400000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightPitchDegree'
| | CamReverse = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:CamReverse'
| | GimbalReverse = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalReverse'
| | RtkFlag = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:RtkFlag'
| | TlinearGain = 0.40
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:TlinearGain'
| | BandName = LWIR
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:BandName/rdf:Seq/rdf:li 10'
| | CentralWavelength = 10000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:CentralWavelength/rdf:Seq/rdf:li 10'
| | WavelengthFWHM = 4500
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:WavelengthFWHM/rdf:Seq/rdf:li 10'
| 19) ExifOffset (SubDirectory) -->
| - Tag 0x8769 (4 bytes, ifd[1]):
| 28d3fa: cc d1 28 00 [..(.]
| + [ExifIFD directory with 9 entries]
| | 0) FNumber = 1.25 (1250/1000)
| | - Tag 0x829d (8 bytes, rational64u[1]):
| | 28d23e: e2 04 00 00 e8 03 00 00 [........]
| | 1) DateTimeOriginal = 2021:01:20 14:26:40
| | - Tag 0x9003 (20 bytes, string[20]):
| | 28d246: 32 30 32 31 3a 30 31 3a 32 30 20 31 34 3a 32 36 [2021:01:20 14:26]
| | 28d256: 3a 34 30 00 [:40.]
| | 2) FocalLength = 19 (19/1)
| | - Tag 0x920a (8 bytes, rational64u[1]):
| | 28d25a: 13 00 00 00 01 00 00 00 [........]
| | 3) ImageNumber = 0
| | - Tag 0x9211 (4 bytes, int32u[1]):
| | 28d1fa: 00 00 00 00 [....]
| | 4) SubSecTimeOriginal = 21
| | - Tag 0x9291 (3 bytes, string[3]):
| | 28d206: 32 31 00 [21.]
| | 5) FocalPlaneXResolution = 3.84 (3840/1000)
| | - Tag 0xa20e (8 bytes, rational64u[1]):
| | 28d262: 00 0f 00 00 e8 03 00 00 [........]
| | 6) FocalPlaneYResolution = 3.072 (3072/1000)
| | - Tag 0xa20f (8 bytes, rational64u[1]):
| | 28d26a: 00 0c 00 00 e8 03 00 00 [........]
| | 7) FocalPlaneResolutionUnit = 4
| | - Tag 0xa210 (2 bytes, int16u[1]):
| | 28d22a: 04 00 [..]
| | 8) SensingMethod = 15
| | - Tag 0xa217 (2 bytes, int16u[1]):
| | 28d236: 0f 00 [..]
| 20) GPSInfo (SubDirectory) -->
| - Tag 0x8825 (4 bytes, ifd[1]):
| 28d406: 72 d2 28 00 [r.(.]
| + [GPS directory with 7 entries]
| | 0) GPSLatitudeRef = N
| | - Tag 0x0001 (2 bytes, string[2]):
| | 28d27c: 4e 00 [N.]
| | 1) GPSLatitude = 48 4 31.321 (48/1 4/1 31321/1000)
| | - Tag 0x0002 (24 bytes, rational64u[3]):
| | 28d2cc: 30 00 00 00 01 00 00 00 04 00 00 00 01 00 00 00 [0...............]
| | 28d2dc: 59 7a 00 00 e8 03 00 00 [Yz......]
| | 2) GPSLongitudeRef = E
| | - Tag 0x0003 (2 bytes, string[2]):
| | 28d294: 45 00 [E.]
| | 3) GPSLongitude = 11 38 30.191 (11/1 38/1 30191/1000)
| | - Tag 0x0004 (24 bytes, rational64u[3]):
| | 28d2e4: 0b 00 00 00 01 00 00 00 26 00 00 00 01 00 00 00 [........&.......]
| | 28d2f4: ef 75 00 00 e8 03 00 00 [.u......]
| | 4) GPSAltitudeRef = 0
| | - Tag 0x0005 (1 bytes, int8u[1]):
| | 28d2ac: 00 [.]
| | 5) GPSAltitude = 620.353 (620353/1000)
| | - Tag 0x0006 (8 bytes, rational64u[1]):
| | 28d2fc: 41 77 09 00 e8 03 00 00 [Aw......]
| | 6) GPSMapDatum = WGS-84
| | - Tag 0x0012 (7 bytes, string[7]):
| | 28d304: 57 47 53 2d 38 34 00 [WGS-84.]
| 21) CameraSerialNumber = 297589
| - Tag 0xc62f (7 bytes, string[7]):
| 28d986: 32 39 37 35 38 39 00 [297589.]
| 22) FrameRate = 30 (30/1)
| - Tag 0xc764 (8 bytes, rational64s[1]):
| 28d98e: 1e 00 00 00 01 00 00 00 [........]
| 0) ImageWidth = 640
| - Tag 0x0100 (2 bytes, int16u[1]):
| 32e146: 80 02 [..]
| 1) ImageHeight = 512
| - Tag 0x0101 (2 bytes, int16u[1]):
| 32e152: 00 02 [..]
| 2) BitsPerSample = 16
| - Tag 0x0102 (2 bytes, int16u[1]):
| 32e15e: 10 00 [..]
| 3) Compression = 1
| - Tag 0x0103 (2 bytes, int16u[1]):
| 32e16a: 01 00 [..]
| 4) PhotometricInterpretation = 1
| - Tag 0x0106 (2 bytes, int16u[1]):
| 32e176: 01 00 [..]
| 5) Make = DJI
| - Tag 0x010f (4 bytes, string[4]):
| 32e182: 44 4a 49 00 [DJI.]
| 6) Model = XT2
| - Tag 0x0110 (4 bytes, string[4]):
| 32e18e: 58 54 32 00 [XT2.]
| 7) StripOffsets = 2677142
| - Tag 0x0111 (4 bytes, int32u[1]):
| 32e19a: 96 d9 28 00 [..(.]
| 8) SamplesPerPixel = 1
| - Tag 0x0115 (2 bytes, int16u[1]):
| 32e1a6: 01 00 [..]
| 9) RowsPerStrip = 512
| - Tag 0x0116 (2 bytes, int16u[1]):
| 32e1b2: 00 02 [..]
| 10) StripByteCounts = 655360
| - Tag 0x0117 (4 bytes, int32u[1]):
| 32e1be: 00 00 0a 00 [....]
| 11) XResolution = 1 (1/1)
| - Tag 0x011a (8 bytes, rational64u[1]):
| 32e256: 01 00 00 00 01 00 00 00 [........]
| 12) YResolution = 1 (1/1)
| - Tag 0x011b (8 bytes, rational64u[1]):
| 32e25e: 01 00 00 00 01 00 00 00 [........]
| 13) PlanarConfiguration = 1
| - Tag 0x011c (2 bytes, int16u[1]):
| 32e1e2: 01 00 [..]
| 14) ResolutionUnit = 1
| - Tag 0x0128 (2 bytes, int16u[1]):
| 32e1ee: 01 00 [..]
| 15) PageNumber = 4 0
| - Tag 0x0129 (4 bytes, int16u[2]):
| 32e1fa: 04 00 00 00 [....]
| 16) Software = V06.02.20
| - Tag 0x0131 (10 bytes, string[10]):
| 32e266: 56 30 36 2e 30 32 2e 32 30 00 [V06.02.20.]
| 17) SampleFormat = 1
| - Tag 0x0153 (2 bytes, int16u[1]):
| 32e212: 01 00 [..]
| 18) ApplicationNotes (SubDirectory) -->
| - Tag 0x02bc (1349 bytes, int8u[1349] read as undef[1349]):
| 32e270: 3c 3f 78 70 61 63 6b 65 74 20 62 65 67 69 6e 3d [..<x:xmpmeta x]
| 32e2b0: 6d 6c 6e 73 3a 78 3d 22 61 64 6f 62 65 3a 6e 73 [mlns:x="adobe:ns]
| [snip 1269 bytes]
| + [XMP directory, 1349 bytes]
| | AbsoluteAltitude = 620.353088
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:AbsoluteAltitude'
| | RelativeAltitude = 50.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:RelativeAltitude'
| | GimbalRollDegree = 0.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalRollDegree'
| | GimbalYawDegree = -82.599998
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalYawDegree'
| | GimbalPitchDegree = -90.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalPitchDegree'
| | FlightRollDegree = -0.200000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightRollDegree'
| | FlightYawDegree = -55.700001
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightYawDegree'
| | FlightPitchDegree = 1.400000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightPitchDegree'
| | CamReverse = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:CamReverse'
| | GimbalReverse = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalReverse'
| | RtkFlag = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:RtkFlag'
| | TlinearGain = 0.40
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:TlinearGain'
| | BandName = LWIR
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:BandName/rdf:Seq/rdf:li 10'
| | CentralWavelength = 10000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:CentralWavelength/rdf:Seq/rdf:li 10'
| | WavelengthFWHM = 4500
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:WavelengthFWHM/rdf:Seq/rdf:li 10'
| 19) ExifOffset (SubDirectory) -->
| - Tag 0x8769 (4 bytes, ifd[1]):
| 32e22a: fc df 32 00 [..2.]
| + [ExifIFD directory with 9 entries]
| | 0) FNumber = 1.25 (1250/1000)
| | - Tag 0x829d (8 bytes, rational64u[1]):
| | 32e06e: e2 04 00 00 e8 03 00 00 [........]
| | 1) DateTimeOriginal = 2021:01:20 14:26:40
| | - Tag 0x9003 (20 bytes, string[20]):
| | 32e076: 32 30 32 31 3a 30 31 3a 32 30 20 31 34 3a 32 36 [2021:01:20 14:26]
| | 32e086: 3a 34 30 00 [:40.]
| | 2) FocalLength = 19 (19/1)
| | - Tag 0x920a (8 bytes, rational64u[1]):
| | 32e08a: 13 00 00 00 01 00 00 00 [........]
| | 3) ImageNumber = 0
| | - Tag 0x9211 (4 bytes, int32u[1]):
| | 32e02a: 00 00 00 00 [....]
| | 4) SubSecTimeOriginal = 24
| | - Tag 0x9291 (3 bytes, string[3]):
| | 32e036: 32 34 00 [24.]
| | 5) FocalPlaneXResolution = 3.84 (3840/1000)
| | - Tag 0xa20e (8 bytes, rational64u[1]):
| | 32e092: 00 0f 00 00 e8 03 00 00 [........]
| | 6) FocalPlaneYResolution = 3.072 (3072/1000)
| | - Tag 0xa20f (8 bytes, rational64u[1]):
| | 32e09a: 00 0c 00 00 e8 03 00 00 [........]
| | 7) FocalPlaneResolutionUnit = 4
| | - Tag 0xa210 (2 bytes, int16u[1]):
| | 32e05a: 04 00 [..]
| | 8) SensingMethod = 15
| | - Tag 0xa217 (2 bytes, int16u[1]):
| | 32e066: 0f 00 [..]
| 20) GPSInfo (SubDirectory) -->
| - Tag 0x8825 (4 bytes, ifd[1]):
| 32e236: a2 e0 32 00 [..2.]
| + [GPS directory with 7 entries]
| | 0) GPSLatitudeRef = N
| | - Tag 0x0001 (2 bytes, string[2]):
| | 32e0ac: 4e 00 [N.]
| | 1) GPSLatitude = 48 4 31.321 (48/1 4/1 31321/1000)
| | - Tag 0x0002 (24 bytes, rational64u[3]):
| | 32e0fc: 30 00 00 00 01 00 00 00 04 00 00 00 01 00 00 00 [0...............]
| | 32e10c: 59 7a 00 00 e8 03 00 00 [Yz......]
| | 2) GPSLongitudeRef = E
| | - Tag 0x0003 (2 bytes, string[2]):
| | 32e0c4: 45 00 [E.]
| | 3) GPSLongitude = 11 38 30.191 (11/1 38/1 30191/1000)
| | - Tag 0x0004 (24 bytes, rational64u[3]):
| | 32e114: 0b 00 00 00 01 00 00 00 26 00 00 00 01 00 00 00 [........&.......]
| | 32e124: ef 75 00 00 e8 03 00 00 [.u......]
| | 4) GPSAltitudeRef = 0
| | - Tag 0x0005 (1 bytes, int8u[1]):
| | 32e0dc: 00 [.]
| | 5) GPSAltitude = 620.353 (620353/1000)
| | - Tag 0x0006 (8 bytes, rational64u[1]):
| | 32e12c: 41 77 09 00 e8 03 00 00 [Aw......]
| | 6) GPSMapDatum = WGS-84
| | - Tag 0x0012 (7 bytes, string[7]):
| | 32e134: 57 47 53 2d 38 34 00 [WGS-84.]
| 21) CameraSerialNumber = 297589
| - Tag 0xc62f (7 bytes, string[7]):
| 32e7b6: 32 39 37 35 38 39 00 [297589.]
| 22) FrameRate = 30 (30/1)
| - Tag 0xc764 (8 bytes, rational64s[1]):
| 32e7be: 1e 00 00 00 01 00 00 00 [........]
| 0) ImageWidth = 640
| - Tag 0x0100 (2 bytes, int16u[1]):
| 3cef76: 80 02 [..]
| 1) ImageHeight = 512
| - Tag 0x0101 (2 bytes, int16u[1]):
| 3cef82: 00 02 [..]
| 2) BitsPerSample = 16
| - Tag 0x0102 (2 bytes, int16u[1]):
| 3cef8e: 10 00 [..]
| 3) Compression = 1
| - Tag 0x0103 (2 bytes, int16u[1]):
| 3cef9a: 01 00 [..]
| 4) PhotometricInterpretation = 1
| - Tag 0x0106 (2 bytes, int16u[1]):
| 3cefa6: 01 00 [..]
| 5) Make = DJI
| - Tag 0x010f (4 bytes, string[4]):
| 3cefb2: 44 4a 49 00 [DJI.]
| 6) Model = XT2
| - Tag 0x0110 (4 bytes, string[4]):
| 3cefbe: 58 54 32 00 [XT2.]
| 7) StripOffsets = 3336134
| - Tag 0x0111 (4 bytes, int32u[1]):
| 3cefca: c6 e7 32 00 [..2.]
| 8) SamplesPerPixel = 1
| - Tag 0x0115 (2 bytes, int16u[1]):
| 3cefd6: 01 00 [..]
| 9) RowsPerStrip = 512
| - Tag 0x0116 (2 bytes, int16u[1]):
| 3cefe2: 00 02 [..]
| 10) StripByteCounts = 655360
| - Tag 0x0117 (4 bytes, int32u[1]):
| 3cefee: 00 00 0a 00 [....]
| 11) XResolution = 1 (1/1)
| - Tag 0x011a (8 bytes, rational64u[1]):
| 3cf086: 01 00 00 00 01 00 00 00 [........]
| 12) YResolution = 1 (1/1)
| - Tag 0x011b (8 bytes, rational64u[1]):
| 3cf08e: 01 00 00 00 01 00 00 00 [........]
| 13) PlanarConfiguration = 1
| - Tag 0x011c (2 bytes, int16u[1]):
| 3cf012: 01 00 [..]
| 14) ResolutionUnit = 1
| - Tag 0x0128 (2 bytes, int16u[1]):
| 3cf01e: 01 00 [..]
| 15) PageNumber = 5 0
| - Tag 0x0129 (4 bytes, int16u[2]):
| 3cf02a: 05 00 00 00 [....]
| 16) Software = V06.02.20
| - Tag 0x0131 (10 bytes, string[10]):
| 3cf096: 56 30 36 2e 30 32 2e 32 30 00 [V06.02.20.]
| 17) SampleFormat = 1
| - Tag 0x0153 (2 bytes, int16u[1]):
| 3cf042: 01 00 [..]
| 18) ApplicationNotes (SubDirectory) -->
| - Tag 0x02bc (1349 bytes, int8u[1349] read as undef[1349]):
| 3cf0a0: 3c 3f 78 70 61 63 6b 65 74 20 62 65 67 69 6e 3d [..<x:xmpmeta x]
| 3cf0e0: 6d 6c 6e 73 3a 78 3d 22 61 64 6f 62 65 3a 6e 73 [mlns:x="adobe:ns]
| [snip 1269 bytes]
| + [XMP directory, 1349 bytes]
| | AbsoluteAltitude = 620.353088
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:AbsoluteAltitude'
| | RelativeAltitude = 50.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:RelativeAltitude'
| | GimbalRollDegree = 0.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalRollDegree'
| | GimbalYawDegree = -82.599998
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalYawDegree'
| | GimbalPitchDegree = -90.000000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalPitchDegree'
| | FlightRollDegree = -0.200000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightRollDegree'
| | FlightYawDegree = -55.700001
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightYawDegree'
| | FlightPitchDegree = 1.400000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:FlightPitchDegree'
| | CamReverse = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:CamReverse'
| | GimbalReverse = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:GimbalReverse'
| | RtkFlag = 0
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/drone-dji:RtkFlag'
| | TlinearGain = 0.40
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:TlinearGain'
| | BandName = LWIR
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:BandName/rdf:Seq/rdf:li 10'
| | CentralWavelength = 10000
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:CentralWavelength/rdf:Seq/rdf:li 10'
| | WavelengthFWHM = 4500
| | - Tag 'x:xmpmeta/rdf:RDF/rdf:Description/FLIR:WavelengthFWHM/rdf:Seq/rdf:li 10'
| 19) ExifOffset (SubDirectory) -->
| - Tag 0x8769 (4 bytes, ifd[1]):
| 3cf05a: 2c ee 3c 00 [,.<.]
| + [ExifIFD directory with 9 entries]
| | 0) FNumber = 1.25 (1250/1000)
| | - Tag 0x829d (8 bytes, rational64u[1]):
| | 3cee9e: e2 04 00 00 e8 03 00 00 [........]
| | 1) DateTimeOriginal = 2021:01:20 14:26:40
| | - Tag 0x9003 (20 bytes, string[20]):
| | 3ceea6: 32 30 32 31 3a 30 31 3a 32 30 20 31 34 3a 32 36 [2021:01:20 14:26]
| | 3ceeb6: 3a 34 30 00 [:40.]
| | 2) FocalLength = 19 (19/1)
| | - Tag 0x920a (8 bytes, rational64u[1]):
| | 3ceeba: 13 00 00 00 01 00 00 00 [........]
| | 3) ImageNumber = 0
| | - Tag 0x9211 (4 bytes, int32u[1]):
| | 3cee5a: 00 00 00 00 [....]
| | 4) SubSecTimeOriginal = 28
| | - Tag 0x9291 (3 bytes, string[3]):
| | 3cee66: 32 38 00 [28.]
| | 5) FocalPlaneXResolution = 3.84 (3840/1000)
| | - Tag 0xa20e (8 bytes, rational64u[1]):
| | 3ceec2: 00 0f 00 00 e8 03 00 00 [........]
| | 6) FocalPlaneYResolution = 3.072 (3072/1000)
| | - Tag 0xa20f (8 bytes, rational64u[1]):
| | 3ceeca: 00 0c 00 00 e8 03 00 00 [........]
| | 7) FocalPlaneResolutionUnit = 4
| | - Tag 0xa210 (2 bytes, int16u[1]):
| | 3cee8a: 04 00 [..]
| | 8) SensingMethod = 15
| | - Tag 0xa217 (2 bytes, int16u[1]):
| | 3cee96: 0f 00 [..]
| 20) GPSInfo (SubDirectory) -->
| - Tag 0x8825 (4 bytes, ifd[1]):
| 3cf066: d2 ee 3c 00 [..<.]
| + [GPS directory with 7 entries]
| | 0) GPSLatitudeRef = N
| | - Tag 0x0001 (2 bytes, string[2]):
| | 3ceedc: 4e 00 [N.]
| | 1) GPSLatitude = 48 4 31.321 (48/1 4/1 31321/1000)
| | - Tag 0x0002 (24 bytes, rational64u[3]):
| | 3cef2c: 30 00 00 00 01 00 00 00 04 00 00 00 01 00 00 00 [0...............]
| | 3cef3c: 59 7a 00 00 e8 03 00 00 [Yz......]
| | 2) GPSLongitudeRef = E
| | - Tag 0x0003 (2 bytes, string[2]):
| | 3ceef4: 45 00 [E.]
| | 3) GPSLongitude = 11 38 30.191 (11/1 38/1 30191/1000)
| | - Tag 0x0004 (24 bytes, rational64u[3]):
| | 3cef44: 0b 00 00 00 01 00 00 00 26 00 00 00 01 00 00 00 [........&.......]
| | 3cef54: ef 75 00 00 e8 03 00 00 [.u......]
| | 4) GPSAltitudeRef = 0
| | - Tag 0x0005 (1 bytes, int8u[1]):
| | 3cef0c: 00 [.]
| | 5) GPSAltitude = 620.353 (620353/1000)
| | - Tag 0x0006 (8 bytes, rational64u[1]):
| | 3cef5c: 41 77 09 00 e8 03 00 00 [Aw......]
| | 6) GPSMapDatum = WGS-84
| | - Tag 0x0012 (7 bytes, string[7]):
| | 3cef64: 57 47 53 2d 38 34 00 [WGS-84.]
| 21) CameraSerialNumber = 297589
| - Tag 0xc62f (7 bytes, string[7]):
| 3cf5e6: 32 39 37 35 38 39 00 [297589.]
| 22) FrameRate = 30 (30/1)
| - Tag 0xc764 (8 bytes, rational64s[1]):
| 3cf5ee: 1e 00 00 00 01 00 00 00 [........]
b) GPSTag is not correctly intepreted with v 0.27 (-pR is KO, but -pa is OK). Why and is there bugfix?
exiv2 -pR DJI_0018.TIFF
1893980318 | 0x8825 GPSTag | IFD | 1 | |
STRUCTURE OF TIFF FILE (II): DJI_0018.TIFF
address | tag | type | count | offset | value
1893979924 | 0x0001 Version | ASCII | 2 | | N
1893979936 | 0x0002 ISOSpeed | RATIONAL | 3 |1893980012 | 48/1 4/1 32667/1000
1893979948 | 0x0003 ColorMode | ASCII | 2 | | E
1893979960 | 0x0004 Quality | RATIONAL | 3 |1893980036 | 11/1 38/1 28797/1000
1893979972 | 0x0005 WhiteBalance | BYTE | 1 | |
1893979984 | 0x0006 Sharpening | RATIONAL | 1 |1893980060 | 620153/1000
1893979996 | 0x0012 GPSMapDatum | ASCII | 7 |1893980068 | WGS-84
exiv2 -pa DJI_0018.TIFF | grep -i lati
Warning: Directory Image3 has an unexpected next pointer; ignored.
Exif.GPSInfo.GPSLatitudeRef Ascii 2 North
Exif.GPSInfo.GPSLatitude Rational 3 48deg 4' 31.321"
Xmp.drone-dji.RelativeAltitude XmpText 9 50.000000
The text was updated successfully, but these errors were encountered: