From 24c5cc7bde9fb9283c0698273c27f1982413f210 Mon Sep 17 00:00:00 2001 From: Stefan Oltmann Date: Mon, 1 Apr 2024 15:27:13 +0200 Subject: [PATCH] Basic GeoTiff support (#84) Implemented basic GeoTiff read support. See #26. --- .gitignore | 1 + README.md | 3 +- .../ashampoo/kim/format/tiff/TiffContents.kt | 11 +- .../ashampoo/kim/format/tiff/TiffDirectory.kt | 30 +- .../com/ashampoo/kim/format/tiff/TiffField.kt | 6 +- .../ashampoo/kim/format/tiff/TiffReader.kt | 44 +- .../com/ashampoo/kim/format/tiff/TiffTags.kt | 7 +- .../kim/format/tiff/constant/ExifTag.kt | 2 +- .../kim/format/tiff/constant/GeoTiffTag.kt | 74 + .../kim/format/tiff/constant/GpsTag.kt | 2 +- .../kim/format/tiff/constant/TiffTag.kt | 2 +- .../kim/format/tiff/geotiff/GeoKey.kt | 87 + .../format/tiff/geotiff/GeoTiffDirectory.kt | 157 ++ .../tiff/geotiff/GeoTiffGeographicType.kt | 211 ++ .../format/tiff/geotiff/GeoTiffModelType.kt | 49 + .../format/tiff/geotiff/GeoTiffRasterType.kt | 46 + .../com/ashampoo/kim/XmpExtractionTest.kt | 4 +- .../com/ashampoo/kim/model/ImageFormatTest.kt | 2 + .../com/ashampoo/kim/testdata/KimTestData.kt | 6 +- .../com/ashampoo/kim/testdata/full/README.txt | 3 + .../ashampoo/kim/testdata/full/photo_22.html | 1261 --------- .../ashampoo/kim/testdata/full/photo_81.tif | Bin 0 -> 458 bytes .../ashampoo/kim/testdata/full/photo_82.tif | Bin 0 -> 502 bytes .../com/ashampoo/kim/testdata/metadata.csv | 2 + .../com/ashampoo/kim/testdata/txt/photo_1.txt | 4 +- .../ashampoo/kim/testdata/txt/photo_15.txt | 8 +- .../ashampoo/kim/testdata/txt/photo_18.txt | 2 +- .../ashampoo/kim/testdata/txt/photo_21.txt | 8 +- .../ashampoo/kim/testdata/txt/photo_28.txt | 4 +- .../ashampoo/kim/testdata/txt/photo_31.txt | 4 +- .../ashampoo/kim/testdata/txt/photo_34.txt | 6 +- .../ashampoo/kim/testdata/txt/photo_44.txt | 4 +- .../ashampoo/kim/testdata/txt/photo_49.txt | 2 +- .../ashampoo/kim/testdata/txt/photo_53.txt | 2 +- .../ashampoo/kim/testdata/txt/photo_57.txt | 2 +- .../ashampoo/kim/testdata/txt/photo_66.txt | 8 +- .../ashampoo/kim/testdata/txt/photo_67.txt | 12 +- .../ashampoo/kim/testdata/txt/photo_68.txt | 8 +- .../ashampoo/kim/testdata/txt/photo_69.txt | 12 +- .../ashampoo/kim/testdata/txt/photo_70.txt | 12 +- .../ashampoo/kim/testdata/txt/photo_71.txt | 12 +- .../ashampoo/kim/testdata/txt/photo_74.txt | 4 +- .../ashampoo/kim/testdata/txt/photo_75.txt | 4 +- .../ashampoo/kim/testdata/txt/photo_81.txt | 38 + .../ashampoo/kim/testdata/txt/photo_82.txt | 37 + .../ashampoo/kim/updates_jpg/original.html | 2412 ----------------- 46 files changed, 862 insertions(+), 3753 deletions(-) create mode 100644 src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/GeoTiffTag.kt create mode 100644 src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoKey.kt create mode 100644 src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffDirectory.kt create mode 100644 src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffGeographicType.kt create mode 100644 src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffModelType.kt create mode 100644 src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffRasterType.kt delete mode 100644 src/commonTest/resources/com/ashampoo/kim/testdata/full/photo_22.html create mode 100644 src/commonTest/resources/com/ashampoo/kim/testdata/full/photo_81.tif create mode 100644 src/commonTest/resources/com/ashampoo/kim/testdata/full/photo_82.tif create mode 100644 src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_81.txt create mode 100644 src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_82.txt delete mode 100644 src/commonTest/resources/com/ashampoo/kim/updates_jpg/original.html diff --git a/.gitignore b/.gitignore index 69eff238..7064382f 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ /build/ /local.properties /.idea/kim.iml +/src/commonTest/resources/com/ashampoo/kim/testdata/full/*.html diff --git a/README.md b/README.md index f9fc404f..591b1e3c 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ of Ashampoo Photos, which, in turn, is driven by user community feedback. ## Installation ``` -implementation("com.ashampoo:kim:0.16.4") +implementation("com.ashampoo:kim:0.17") ``` For the targets `wasmJs` & `js` you also need to specify this: @@ -159,6 +159,7 @@ See the [Java example project](examples/kim-java-sample) how to use Kim in Java + Can't extract preview image of ORF as offsets are burried into MakerNote. + Can't identify lens info of NEF, ARW, RW2 & ORF because this is constructed from MakerNote fields. + Missing image size for RW2 as this is also burried in MakerNotes. +* GeoTiff support is limited and supports only reading at this time. ### Regarding HEIC & AVIF metadata diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffContents.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffContents.kt index 269d1b0c..fd3d6812 100644 --- a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffContents.kt +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffContents.kt @@ -16,14 +16,17 @@ */ package com.ashampoo.kim.format.tiff +import com.ashampoo.kim.format.tiff.geotiff.GeoTiffDirectory import com.ashampoo.kim.format.tiff.taginfo.TagInfo import com.ashampoo.kim.format.tiff.write.TiffOutputSet data class TiffContents( val header: TiffHeader, val directories: List, - /** Artifical MakerNote directory */ - val makerNoteDirectory: TiffDirectory? + /** Artificial MakerNote directory */ + val makerNoteDirectory: TiffDirectory?, + /** Artificial GeoTiff directory */ + val geoTiffDirectory: GeoTiffDirectory? ) { fun findTiffField(tagInfo: TagInfo): TiffField? = @@ -72,6 +75,10 @@ data class TiffContents( sb.appendLine(makerNoteDirectory) } + geoTiffDirectory?.let { + sb.appendLine(geoTiffDirectory) + } + return sb.toString() } } diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffDirectory.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffDirectory.kt index 9e307aa5..f37f4bef 100644 --- a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffDirectory.kt +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffDirectory.kt @@ -260,11 +260,29 @@ class TiffDirectory( * Note: Keep in sync with TiffTags.getTag() */ @Suppress("UnnecessaryParentheses") - fun findTiffField(directories: List, tagInfo: TagInfo): TiffField? = - directories.firstOrNull { directory -> - directory.type == tagInfo.directoryType?.typeId || - (tagInfo.directoryType?.isImageDirectory == true && directory.type >= 0) || - (tagInfo.directoryType?.isImageDirectory == false && directory.type < 0) - }?.findField(tagInfo) + fun findTiffField(directories: List, tagInfo: TagInfo): TiffField? { + + /* + * TagInfos that specify a directory (like GPS and MakerNotes) + * should be exact matches. + */ + if (tagInfo.directoryType != null) { + + directories + .firstOrNull { directory -> directory.type == tagInfo.directoryType.typeId } + ?.findField(tagInfo) + } + + /* + * All others are matched with all directories. + */ + for (directory in directories) { + directory.findField(tagInfo)?.let { + return it + } + } + + return null + } } } diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffField.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffField.kt index 5aff71ac..70296e01 100644 --- a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffField.kt +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffField.kt @@ -228,6 +228,10 @@ class TiffField( companion object { - private const val MAX_ARRAY_LENGTH_DISPLAY_SIZE = 10 + /** + * Limit to 16 bytes, so that a GeoTiff ModelTransformationTag + * is still displayed in full, but not values greater than that. + */ + private const val MAX_ARRAY_LENGTH_DISPLAY_SIZE = 16 } } diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffReader.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffReader.kt index c8775d01..d65f2fc1 100644 --- a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffReader.kt +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffReader.kt @@ -23,6 +23,7 @@ import com.ashampoo.kim.common.startsWith import com.ashampoo.kim.common.toInt import com.ashampoo.kim.format.ImageFormatMagicNumbers import com.ashampoo.kim.format.tiff.constant.ExifTag +import com.ashampoo.kim.format.tiff.constant.GeoTiffTag import com.ashampoo.kim.format.tiff.constant.TiffConstants import com.ashampoo.kim.format.tiff.constant.TiffConstants.EXIF_SUB_IFD1 import com.ashampoo.kim.format.tiff.constant.TiffConstants.EXIF_SUB_IFD2 @@ -30,6 +31,7 @@ import com.ashampoo.kim.format.tiff.constant.TiffConstants.EXIF_SUB_IFD3 import com.ashampoo.kim.format.tiff.constant.TiffConstants.TIFF_DIRECTORY_TYPE_IFD1 import com.ashampoo.kim.format.tiff.constant.TiffTag import com.ashampoo.kim.format.tiff.fieldtype.FieldType.Companion.getFieldType +import com.ashampoo.kim.format.tiff.geotiff.GeoTiffDirectory import com.ashampoo.kim.format.tiff.taginfo.TagInfoLong import com.ashampoo.kim.format.tiff.taginfo.TagInfoLongs import com.ashampoo.kim.input.ByteArrayByteReader @@ -80,13 +82,15 @@ object TiffReader { } ) + if (directories.isEmpty()) + throw ImageReadException("Image did not contain any directories.") + val makerNoteDirectory = tryToParseMakerNote(directories, byteReader, tiffHeader.byteOrder) - if (directories.isEmpty()) - throw ImageReadException("Image did not contain any directories.") + val geoTiffDirectory = tryToParseGeoTiff(directories) - return TiffContents(tiffHeader, directories, makerNoteDirectory) + return TiffContents(tiffHeader, directories, makerNoteDirectory, geoTiffDirectory) } fun readTiffHeader(byteReader: ByteReader): TiffHeader { @@ -500,4 +504,38 @@ object TiffReader { ) } } + + /** + * Inspect if MakerNotes are present and could be added as + * TiffDirectory. This is true for almost all manufacturers. + */ + private fun tryToParseGeoTiff( + directories: MutableList + ): GeoTiffDirectory? { + + try { + + val geoTiffDirectoryField = TiffDirectory.findTiffField( + directories, + GeoTiffTag.EXIF_TAG_GEO_KEY_DIRECTORY_TAG + ) ?: return null + + val shorts = geoTiffDirectoryField.value as? ShortArray + + if (shorts != null) + return GeoTiffDirectory.parseFrom(shorts) + + return null + + } catch (ignore: Exception) { + + ignore.printStackTrace() // FIXME + + /* + * Be silent here as GeoTiff interpretation is not essential. + */ + + return null + } + } } diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffTags.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffTags.kt index 07919282..94c0e5e1 100644 --- a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffTags.kt +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/TiffTags.kt @@ -19,6 +19,7 @@ package com.ashampoo.kim.format.tiff import com.ashampoo.kim.format.tiff.constant.CanonTag import com.ashampoo.kim.format.tiff.constant.ExifTag import com.ashampoo.kim.format.tiff.constant.ExifTag.EXIF_DIRECTORY_UNKNOWN +import com.ashampoo.kim.format.tiff.constant.GeoTiffTag import com.ashampoo.kim.format.tiff.constant.GpsTag import com.ashampoo.kim.format.tiff.constant.NikonTag import com.ashampoo.kim.format.tiff.constant.TiffConstants @@ -27,11 +28,11 @@ import com.ashampoo.kim.format.tiff.taginfo.TagInfo internal object TiffTags { - /* Ordered to give EXIF tag names priority. */ - private val TIFF_AND_EXIF_TAGS = ExifTag.ALL_EXIF_TAGS + TiffTag.ALL_TIFF_TAGS + /* Note: Ordered to give EXIF tag names priority. */ + private val TIFF_AND_EXIF_TAGS = ExifTag.ALL + TiffTag.ALL + GeoTiffTag.ALL private val TIFF_AND_EXIF_TAGS_MAP = TIFF_AND_EXIF_TAGS.groupByTo(mutableMapOf()) { it.tag } - private val GPS_TAGS_MAP = GpsTag.ALL_GPS_TAGS.groupByTo(mutableMapOf()) { it.tag } + private val GPS_TAGS_MAP = GpsTag.ALL.groupByTo(mutableMapOf()) { it.tag } private val CANON_TAGS_MAP = CanonTag.ALL.groupByTo(mutableMapOf()) { it.tag } private val NIKON_TAGS_MAP = NikonTag.ALL.groupByTo(mutableMapOf()) { it.tag } diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/ExifTag.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/ExifTag.kt index 04da53fe..f6c43f78 100644 --- a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/ExifTag.kt +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/ExifTag.kt @@ -892,7 +892,7 @@ object ExifTag { TIFF_DIRECTORY_IFD0 ) - val ALL_EXIF_TAGS = listOf( + val ALL = listOf( EXIF_TAG_INTEROPERABILITY_INDEX, EXIF_TAG_INTEROPERABILITY_VERSION, EXIF_TAG_INTEROPERABILITY_RELATED_IMAGE_WIDTH, EXIF_TAG_INTEROPERABILITY_RELATED_IMAGE_HEIGHT, diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/GeoTiffTag.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/GeoTiffTag.kt new file mode 100644 index 00000000..4a587f3e --- /dev/null +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/GeoTiffTag.kt @@ -0,0 +1,74 @@ +/* + * Copyright 2024 Ashampoo GmbH & Co. KG + * Copyright 2007-2023 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.ashampoo.kim.format.tiff.constant + +import com.ashampoo.kim.format.tiff.constant.ExifTag.EXIF_DIRECTORY_UNKNOWN +import com.ashampoo.kim.format.tiff.taginfo.TagInfoAscii +import com.ashampoo.kim.format.tiff.taginfo.TagInfoDoubles +import com.ashampoo.kim.format.tiff.taginfo.TagInfoShorts + +/** + * See https://exiftool.org/TagNames/GeoTiff.html + */ +@Suppress("MagicNumber") +object GeoTiffTag { + + val EXIF_TAG_MODEL_PIXEL_SCALE_TAG: TagInfoDoubles = TagInfoDoubles( + 0x830e, "ModelPixelScaleTag", 3, + EXIF_DIRECTORY_UNKNOWN + ) + + val EXIF_TAG_INTERGRAPH_MATRIX_TAG: TagInfoDoubles = TagInfoDoubles( + 0x8480, "IntergraphMatrixTag", -1, + EXIF_DIRECTORY_UNKNOWN + ) + + val EXIF_TAG_MODEL_TIEPOINT_TAG: TagInfoDoubles = TagInfoDoubles( + 0x8482, "ModelTiepointTag", -1, + EXIF_DIRECTORY_UNKNOWN + ) + + val EXIF_TAG_MODEL_TRANSFORMATION_TAG: TagInfoDoubles = TagInfoDoubles( + 0x85d8, "ModelTransformationTag", 16, + EXIF_DIRECTORY_UNKNOWN + ) + + val EXIF_TAG_GEO_KEY_DIRECTORY_TAG: TagInfoShorts = TagInfoShorts( + 0x87af, "GeoKeyDirectoryTag", -1, + EXIF_DIRECTORY_UNKNOWN + ) + + val EXIF_TAG_GEO_DOUBLE_PARAMS_TAG: TagInfoDoubles = TagInfoDoubles( + 0x87b0, "GeoDoubleParamsTag", -1, + EXIF_DIRECTORY_UNKNOWN + ) + + val EXIF_TAG_GEO_ASCII_PARAMS_TAG: TagInfoAscii = TagInfoAscii( + 0x87b1, "GeoAsciiParamsTag", -1, + EXIF_DIRECTORY_UNKNOWN + ) + + val ALL = listOf( + EXIF_TAG_MODEL_PIXEL_SCALE_TAG, + EXIF_TAG_INTERGRAPH_MATRIX_TAG, + EXIF_TAG_MODEL_TIEPOINT_TAG, + EXIF_TAG_MODEL_TRANSFORMATION_TAG, + EXIF_TAG_GEO_KEY_DIRECTORY_TAG, + EXIF_TAG_GEO_DOUBLE_PARAMS_TAG, + EXIF_TAG_GEO_ASCII_PARAMS_TAG + ) +} diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/GpsTag.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/GpsTag.kt index 1a4291c1..4213e5fc 100644 --- a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/GpsTag.kt +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/GpsTag.kt @@ -216,7 +216,7 @@ object GpsTag { const val GPS_TAG_GPS_DIFFERENTIAL_VALUE_NO_CORRECTION = 0 const val GPS_TAG_GPS_DIFFERENTIAL_VALUE_DIFFERENTIAL_CORRECTED = 1 - val ALL_GPS_TAGS = listOf( + val ALL = listOf( GPS_TAG_GPS_VERSION_ID, GPS_TAG_GPS_LATITUDE_REF, GPS_TAG_GPS_LATITUDE, GPS_TAG_GPS_LONGITUDE_REF, GPS_TAG_GPS_LONGITUDE, GPS_TAG_GPS_ALTITUDE_REF, diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/TiffTag.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/TiffTag.kt index 1d07635e..e3c90008 100644 --- a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/TiffTag.kt +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/constant/TiffTag.kt @@ -546,7 +546,7 @@ object TiffTag { 0xC612, "DNGVersion", 4, TIFF_DIRECTORY_IFD0 ) - val ALL_TIFF_TAGS = listOf( + val ALL = listOf( TIFF_TAG_NEW_SUBFILE_TYPE, TIFF_TAG_SUBFILE_TYPE, TIFF_TAG_IMAGE_WIDTH, TIFF_TAG_IMAGE_LENGTH, TIFF_TAG_BITS_PER_SAMPLE, TIFF_TAG_COMPRESSION, diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoKey.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoKey.kt new file mode 100644 index 00000000..b42ba58d --- /dev/null +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoKey.kt @@ -0,0 +1,87 @@ +/* + * Copyright 2024 Ashampoo GmbH & Co. KG + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.ashampoo.kim.format.tiff.geotiff + +import kotlin.jvm.JvmStatic + +/** + * See http://geotiff.maptools.org/spec/geotiff6.html + */ +@Suppress("MagicNumber") +enum class GeoKey( + val keyId: Short +) { + + /* 6.2.1 GeoTIFF Configuration Keys */ + GTModelTypeGeoKey(1024), + GTRasterTypeGeoKey(1025), + GTCitationGeoKey(1026), + + /* 6.2.2 Geographic CS Parameter Keys */ + GeographicTypeGeoKey(2048), + GeogCitationGeoKey(2049), + GeogGeodeticDatumGeoKey(2050), + GeogPrimeMeridianGeoKey(2051), + GeogLinearUnitsGeoKey(2052), + GeogLinearUnitSizeGeoKey(2053), + GeogAngularUnitsGeoKey(2054), + GeogAngularUnitSizeGeoKey(2055), + GeogEllipsoidGeoKey(2056), + GeogSemiMajorAxisGeoKey(2057), + GeogSemiMinorAxisGeoKey(2058), + GeogInvFlatteningGeoKey(2059), + GeogAzimuthUnitsGeoKey(2060), + GeogPrimeMeridianLongGeoKey(2061), + + /* 6.2.3 Projected CS Parameter Keys */ + ProjectedCSTypeGeoKey(3072), + PCSCitationGeoKey(3073), + ProjectionGeoKey(3074), + ProjCoordTransGeoKey(3075), + ProjLinearUnitsGeoKey(3076), + ProjLinearUnitSizeGeoKey(3077), + ProjStdParallel1GeoKey(3078), + ProjStdParallel2GeoKey(3079), + ProjNatOriginLongGeoKey(3080), + ProjNatOriginLatGeoKey(3081), + ProjFalseEastingGeoKey(3082), + ProjFalseNorthingGeoKey(3083), + ProjFalseOriginLongGeoKey(3084), + ProjFalseOriginLatGeoKey(3085), + ProjFalseOriginEastingGeoKey(3086), + ProjFalseOriginNorthingGeoKey(3087), + ProjCenterLongGeoKey(3088), + ProjCenterLatGeoKey(3089), + ProjCenterEastingGeoKey(3090), + ProjCenterNorthingGeoKey(3091), + ProjScaleAtNatOriginGeoKey(3092), + ProjScaleAtCenterGeoKey(3093), + ProjAzimuthAngleGeoKey(3094), + ProjStraightVertPoleLongGeoKey(3095), + + /* 6.2.4 Vertical CS Keys */ + VerticalCSTypeGeoKey(4096), + VerticalCitationGeoKey(4097), + VerticalDatumGeoKey(4098), + VerticalUnitsGeoKey(4099); + + companion object { + + @JvmStatic + fun of(keyId: Short): GeoKey? = + GeoKey.entries.firstOrNull { it.keyId == keyId } + } +} diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffDirectory.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffDirectory.kt new file mode 100644 index 00000000..c034c788 --- /dev/null +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffDirectory.kt @@ -0,0 +1,157 @@ +/* + * Copyright 2024 Ashampoo GmbH & Co. KG + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.ashampoo.kim.format.tiff.geotiff + +import com.ashampoo.kim.common.ImageReadException + +/** + * See http://geotiff.maptools.org/spec/geotiff2.4.html + */ +data class GeoTiffDirectory( + + /** + * "KeyDirectoryVersion" indicates the current version of Key + * implementation, and will only change if this Tag's Key + * structure is changed. (Similar to the TIFFVersion (42)). + * The current DirectoryVersion number is 1. This value will + * most likely never change, and may be used to ensure that + * this is a valid Key-implementation. + */ + val keyDirectoryVersion: Short, + + /** + * "KeyRevision" indicates what revision of Key-Sets are used. + * "MinorRevision" indicates what set of Key-codes are used. + * The complete revision number is denoted . + */ + val keyRevision: Short, + + val minorRevision: Short, + + val modelType: GeoTiffModelType?, + + val rasterType: GeoTiffRasterType?, + + val geographicType: GeoTiffGeographicType? + +) { + + val geoTiffVersionString: String = + "$keyDirectoryVersion.$keyRevision.$minorRevision" + + override fun toString(): String { + + val sb = StringBuilder() + + sb.appendLine("---- GeoTiff ----") + sb.appendLine("Version : $geoTiffVersionString") + sb.appendLine("Model type : ${modelType?.displayName ?: "-/-"}") + sb.appendLine("Raster type : ${rasterType?.displayName ?: "-/-"}") + sb.appendLine("Geographic type : ${geographicType?.displayName ?: "-/-"}") + + return sb.toString() + } + + companion object { + + @Suppress("MagicNumber") + fun parseFrom(shorts: ShortArray): GeoTiffDirectory { + + require(shorts.size >= 4) { + "GeoTiffDirectory should be at least 4 bytes, but was ${shorts.size}." + } + + val keyDirectoryVersion = shorts[0] + + if (keyDirectoryVersion != 1.toShort()) + throw ImageReadException("Illegal KeyDirectoryVersion: $keyDirectoryVersion") + + val keyRevision = shorts[1] + val minorRevision = shorts[2] + + /* + * "NumberOfKeys" indicates how many Keys + * are defined by the rest of this Tag. + */ + val numberOfKeys = shorts[3] + + var geoTiffModelType: GeoTiffModelType? = null + var geoTiffRasterType: GeoTiffRasterType? = null + var geoTiffGeographicType: GeoTiffGeographicType? = null + + repeat(numberOfKeys.toInt()) { index -> + + /* + * "KeyID" gives the key-ID value of the Key (identical in function + * to TIFF tag ID, but completely independent of TIFF tag-space) + */ + val keyId = shorts[3 + index * 4 + 1] + + /* + * We only want to handle keys we know. + */ + val geoKey = GeoKey.of(keyId) ?: return@repeat + + /* + * "TIFFTagLocation" indicates which TIFF tag contains the value(s) + * of the Key: if TIFFTagLocation is 0, then the value is SHORT, + * and is contained in the "Value_Offset" entry. Otherwise, the type + * (format) of the value is implied by the TIFF-Type of the tag + * containing the value. + */ + val tiffTagLocation = shorts[3 + index * 4 + 2] + + /* "Count" indicates the number of values in this key. */ + val count = shorts[3 + index * 4 + 3] + + /* + * "Value_Offset" Value_Offset indicates the index-offset *into* the TagArray + * indicated by TIFFTagLocation, if it is nonzero. + * If TIFFTagLocation=0, then Value_Offset contains the actual (SHORT) value + * of the Key, and Count=1 is implied. Note that the offset is not a byte-offset, + * but rather an index based on the natural data type of the specified tag array. + */ + val valueOrOffset = shorts[3 + index * 4 + 4] + + /* + * Handle specific interesting values. + */ + when (geoKey) { + + GeoKey.GTModelTypeGeoKey -> + geoTiffModelType = GeoTiffModelType.of(valueOrOffset) + + GeoKey.GTRasterTypeGeoKey -> + geoTiffRasterType = GeoTiffRasterType.of(valueOrOffset) + + GeoKey.GeographicTypeGeoKey -> + geoTiffGeographicType = GeoTiffGeographicType.of(valueOrOffset) + + else -> return@repeat + } + } + + return GeoTiffDirectory( + keyDirectoryVersion, + keyRevision, + minorRevision, + geoTiffModelType, + geoTiffRasterType, + geoTiffGeographicType + ) + } + } +} diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffGeographicType.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffGeographicType.kt new file mode 100644 index 00000000..56f5b8c3 --- /dev/null +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffGeographicType.kt @@ -0,0 +1,211 @@ +/* + * Copyright 2024 Ashampoo GmbH & Co. KG + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.ashampoo.kim.format.tiff.geotiff + +import kotlin.jvm.JvmStatic + +/** + * 6.3.2.1 Geographic CS Type Codes + * + * See http://geotiff.maptools.org/spec/geotiff6.html#6.3.2.1 + */ +@Suppress("MagicNumber") +enum class GeoTiffGeographicType( + val typeCode: Short, + val displayName: String +) { + + GCS_ADINDAN(4201, "Adindan"), + GCS_AGD66(4202, "AGD66"), + GCS_AGD84(4203, "AGD84"), + GCS_AIN_EL_ABD(4204, "Ain el Abd"), + GCS_AFGOOYE(4205, "Afgooye"), + GCS_AGADEZ(4206, "Agadez"), + GCS_LISBON(4207, "Lisbon"), + GCS_ARATU(4208, "Aratu"), + GCS_ARC_1950(4209, "Arc 1950"), + GCS_ARC_1960(4210, "Arc 1960"), + GCS_BATAVIA(4211, "Batavia"), + GCS_BARBADOS(4212, "Barbados"), + GCS_BEDUARAM(4213, "Beduaram"), + GCS_BEIJING_1954(4214, "Beijing 1954"), + GCS_BELGE_1950(4215, "Belge 1950"), + GCS_BERMUDA_1957(4216, "Bermuda 1957"), + GCS_BERN_1898(4217, "Bern 1898"), + GCS_BOGOTA(4218, "Bogota"), + GCS_BUKIT_RIMPAH(4219, "Bukit Rimpah"), + GCS_CAMACUPA(4220, "Camacupa"), + GCS_CAMPO_INCHAUSPE(4221, "Campo Inchauspe"), + GCS_CAPE(4222, "Cape"), + GCS_CARTHAGE(4223, "Carthage"), + GCS_CHUA(4224, "Chua"), + GCS_CORREGO_ALEGRE(4225, "Corrego Alegre"), + GCS_COTE_D_IVOIRE(4226, "Cote d Ivoire"), + GCS_DEIR_EZ_ZOR(4227, "Deir ez Zor"), + GCS_DOUALA(4228, "Douala"), + GCS_EGYPT_1907(4229, "Egypt 1907"), + GCS_ED50(4230, "ED50"), + GCS_ED87(4231, "ED87"), + GCS_FAHUD(4232, "Fahud"), + GCS_GANDAJIKA_1970(4233, "Gandajika 1970"), + GCS_GAROUA(4234, "Garoua"), + GCS_GUYANE_FRANCAISE(4235, "Guyane Francaise"), + GCS_HU_TZU_SHAN(4236, "Hu Tzu Shan"), + GCS_HD72(4237, "HD72"), + GCS_ID74(4238, "ID74"), + GCS_INDIAN_1954(4239, "Indian 1954"), + GCS_INDIAN_1975(4240, "Indian 1975"), + GCS_JAMAICA_1875(4241, "Jamaica 1875"), + GCS_JAD69(4242, "JAD69"), + GCS_KALIANPUR(4243, "Kalianpur"), + GCS_KANDAWALA(4244, "Kandawala"), + GCS_KERTAU(4245, "Kertau"), + GCS_KOC(4246, "KOC"), + GCS_LA_CANOA(4247, "La Canoa"), + GCS_PSAD56(4248, "PSAD56"), + GCS_LAKE(4249, "Lake"), + GCS_LEIGON(4250, "Leigon"), + GCS_LIBERIA_1964(4251, "Liberia 1964"), + GCS_LOME(4252, "Lome"), + GCS_LUZON_1911(4253, "Luzon 1911"), + GCS_HITO_XVIII_1963(4254, "Hito XVIII 1963"), + GCS_HERAT_NORTH(4255, "Herat North"), + GCS_MAHE_1971(4256, "Mahe 1971"), + GCS_MAKASSAR(4257, "Makassar"), + GCS_EUREF89(4258, "EUREF89"), + GCS_MALONGO_1987(4259, "Malongo 1987"), + GCS_MANOCA(4260, "Manoca"), + GCS_MERCHICH(4261, "Merchich"), + GCS_MASSAWA(4262, "Massawa"), + GCS_MINNA(4263, "Minna"), + GCS_MHAST(4264, "Mhast"), + GCS_MONTE_MARIO(4265, "Monte Mario"), + GCS_M_PORALOKO(4266, "M poraloko"), + GCS_NAD27(4267, "NAD27"), + GCS_NAD_MICHIGAN(4268, "NAD Michigan"), + GCS_NAD83(4269, "NAD83"), + GCS_NAHRWAN_1967(4270, "Nahrwan 1967"), + GCS_NAPARIMA_1972(4271, "Naparima 1972"), + GCS_GD49(4272, "GD49"), + GCS_NGO_1948(4273, "NGO 1948"), + GCS_DATUM_73(4274, "Datum 73"), + GCS_NTF(4275, "NTF"), + GCS_NSWC_9Z_2(4276, "NSWC 9Z 2"), + GCS_OSGB_1936(4277, "OSGB 1936"), + GCS_OSGB70(4278, "OSGB70"), + GCS_OS_SN80(4279, "OS SN80"), + GCS_PADANG(4280, "Padang"), + GCS_PALESTINE_1923(4281, "Palestine 1923"), + GCS_POINTE_NOIRE(4282, "Pointe Noire"), + GCS_GDA94(4283, "GDA94"), + GCS_PULKOVO_1942(4284, "Pulkovo 1942"), + GCS_QATAR(4285, "Qatar"), + GCS_QATAR_1948(4286, "Qatar 1948"), + GCS_QORNOQ(4287, "Qornoq"), + GCS_LOMA_QUINTANA(4288, "Loma Quintana"), + GCS_AMERSFOORT(4289, "Amersfoort"), + GCS_RT38(4290, "RT38"), + GCS_SAD69(4291, "SAD69"), + GCS_SAPPER_HILL_1943(4292, "Sapper Hill 1943"), + GCS_SCHWARZECK(4293, "Schwarzeck"), + GCS_SEGORA(4294, "Segora"), + GCS_SERINDUNG(4295, "Serindung"), + GCS_SUDAN(4296, "Sudan"), + GCS_TANANARIVE(4297, "Tananarive"), + GCS_TIMBALAI_1948(4298, "Timbalai 1948"), + GCS_TM65(4299, "TM65"), + GCS_TM75(4300, "TM75"), + GCS_TOKYO(4301, "Tokyo"), + GCS_TRINIDAD_1903(4302, "Trinidad 1903"), + GCS_TC_1948(4303, "TC 1948"), + GCS_VOIROL_1875(4304, "Voirol 1875"), + GCS_VOIROL_UNIFIE(4305, "Voirol Unifie"), + GCS_BERN_1938(4306, "Bern 1938"), + GCS_NORD_SAHARA_1959(4307, "Nord Sahara 1959"), + GCS_STOCKHOLM_1938(4308, "Stockholm 1938"), + GCS_YACARE(4309, "Yacare"), + GCS_YOFF(4310, "Yoff"), + GCS_ZANDERIJ(4311, "Zanderij"), + GCS_MGI(4312, "MGI"), + GCS_BELGE_1972(4313, "Belge 1972"), + GCS_DHDN(4314, "DHDN"), + GCS_CONAKRY_1905(4315, "Conakry 1905"), + GCS_WGS_72(4322, "WGS 72"), + GCS_WGS_72BE(4324, "WGS 72BE"), + GCS_WGS_84(4326, "WGS 84"), + GCS_BERN_1898_BERN(4801, "Bern 1898 Bern"), + GCS_BOGOTA_BOGOTA(4802, "Bogota Bogota"), + GCS_LISBON_LISBON(4803, "Lisbon Lisbon"), + GCS_MAKASSAR_JAKARTA(4804, "Makassar Jakarta"), + GCS_MGI_FERRO(4805, "MGI Ferro"), + GCS_MONTE_MARIO_ROME(4806, "Monte Mario Rome"), + GCS_NTF_PARIS(4807, "NTF Paris"), + GCS_PADANG_JAKARTA(4808, "Padang Jakarta"), + GCS_BELGE_1950_BRUSSELS(4809, "Belge 1950 Brussels"), + GCS_TANANARIVE_PARIS(4810, "Tananarive Paris"), + GCS_VOIROL_1875_PARIS(4811, "Voirol 1875 Paris"), + GCS_VOIROL_UNIFIE_PARIS(4812, "Voirol Unifie Paris"), + GCS_BATAVIA_JAKARTA(4813, "Batavia Jakarta"), + GCS_ATF_PARIS(4901, "ATF Paris"), + GCS_NDG_PARIS(4902, "NDG Paris"), + + /* Ellipsoid-Only GCS */ + GCSE_AIRY1830(4001, "Airy 1830"), + GCSE_AIRYMODIFIED1849(4002, "Airy Modified 1849"), + GCSE_AUSTRALIANNATIONALSPHEROID(4003, "Australian National Spheroid"), + GCSE_BESSEL1841(4004, "Bessel 1841"), + GCSE_BESSELMODIFIED(4005, "Bessel Modified"), + GCSE_BESSELNAMIBIA(4006, "Bessel Namibia"), + GCSE_CLARKE1858(4007, "Clarke 1858"), + GCSE_CLARKE1866(4008, "Clarke 1866"), + GCSE_CLARKE1866_MICHIGAN(4009, "Clarke 1866 Michigan"), + GCSE_CLARKE1880_BENOIT(4010, "Clarke 1880 Benoit"), + GCSE_CLARKE1880_IGN(4011, "Clarke 1880 IGN"), + GCSE_CLARKE1880_RGS(4012, "Clarke 1880 RGS"), + GCSE_CLARKE1880_ARC(4013, "Clarke 1880 Arc"), + GCSE_CLARKE1880_SGA1922(4014, "Clarke1880 SGA 1922"), + GCSE_EVEREST1830_1937ADJUSTMENT(4015, "Everest 1830 1937 Adjustment"), + GCSE_EVEREST1830_1967DEFINITION(4016, "Everest 1830 1967 Definition"), + GCSE_EVEREST1830_1975DEFINITION(4017, "Everest 1830 1975 Definition"), + GCSE_EVEREST1830MODIFIED(4018, "Everest1830 Modified"), + GCSE_GRS1980(4019, "GRS 1980"), + GCSE_HELMERT1906(4020, "Helmert 1906"), + GCSE_INDONESIANNATIONALSPHEROID(4021, "Indonesian National Spheroid"), + GCSE_INTERNATIONAL1924(4022, "International 1924"), + GCSE_INTERNATIONAL1967(4023, "International 1967"), + GCSE_KRASSOWSKY1940(4024, "Krassowsky 1940"), + GCSE_NWL9D(4025, "NWL9D"), + GCSE_NWL10D(4026, "NWL10D"), + GCSE_PLESSIS1817(4027, "Plessis 1817"), + GCSE_STRUVE1860(4028, "Struve 1860"), + GCSE_WAROFFICE(4029, "War Office"), + GCSE_WGS84(4030, "WGS84"), + GCSE_GEM10C(4031, "GEM10C"), + GCSE_OSU86F(4032, "OSU86F"), + GCSE_OSU91A(4033, "OSU91A"), + GCSE_CLARKE1880(4034, "Clarke 1880"), + GCSE_SPHERE(4035, "Sphere"), + + /** user-defined */ + USER_DEFINED(32767, "User Defined"); + + companion object { + + @JvmStatic + fun of(typeCode: Short): GeoTiffGeographicType? = + GeoTiffGeographicType.values().firstOrNull { it.typeCode == typeCode } + } +} diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffModelType.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffModelType.kt new file mode 100644 index 00000000..b6350c73 --- /dev/null +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffModelType.kt @@ -0,0 +1,49 @@ +/* + * Copyright 2024 Ashampoo GmbH & Co. KG + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.ashampoo.kim.format.tiff.geotiff + +import kotlin.jvm.JvmStatic + +/** + * 6.3.1.1 Model Type Codes + * + * See http://geotiff.maptools.org/spec/geotiff6.html#6.3.1.1 + */ +@Suppress("MagicNumber") +enum class GeoTiffModelType( + val typeCode: Short, + val displayName: String +) { + + /** Projection Coordinate System */ + PROJECTED(1, "Projected"), + + /** Geographic latitude-longitude System */ + GEOGRAPHIC(2, "Geographic"), + + /** Geocentric (X,Y,Z) Coordinate System */ + GEOCENTRIC(3, "Geocentric"), + + /** user-defined */ + USER_DEFINED(32767, "User Defined"); + + companion object { + + @JvmStatic + fun of(typeCode: Short): GeoTiffModelType? = + GeoTiffModelType.entries.firstOrNull { it.typeCode == typeCode } + } +} diff --git a/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffRasterType.kt b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffRasterType.kt new file mode 100644 index 00000000..76ada0ca --- /dev/null +++ b/src/commonMain/kotlin/com/ashampoo/kim/format/tiff/geotiff/GeoTiffRasterType.kt @@ -0,0 +1,46 @@ +/* + * Copyright 2024 Ashampoo GmbH & Co. KG + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.ashampoo.kim.format.tiff.geotiff + +import kotlin.jvm.JvmStatic + +/** + * 6.3.1.2 Raster Type Codes + * + * See http://geotiff.maptools.org/spec/geotiff6.html#6.3.1.2 + */ +@Suppress("MagicNumber") +enum class GeoTiffRasterType( + val typeCode: Short, + val displayName: String +) { + + /** Projection Coordinate System */ + PIXEL_IS_AREA(1, "Pixel Is Area"), + + /** Geographic latitude-longitude System */ + PIXEL_IS_POINT(2, "Pixel Is Point"), + + /** user-defined */ + USER_DEFINED(32767, "User Defined"); + + companion object { + + @JvmStatic + fun of(typeCode: Short): GeoTiffRasterType? = + GeoTiffRasterType.entries.firstOrNull { it.typeCode == typeCode } + } +} diff --git a/src/commonTest/kotlin/com/ashampoo/kim/XmpExtractionTest.kt b/src/commonTest/kotlin/com/ashampoo/kim/XmpExtractionTest.kt index 08957def..2b6dd19d 100644 --- a/src/commonTest/kotlin/com/ashampoo/kim/XmpExtractionTest.kt +++ b/src/commonTest/kotlin/com/ashampoo/kim/XmpExtractionTest.kt @@ -32,7 +32,9 @@ class XmpExtractionTest { KimTestData.ARW_TEST_IMAGE_INDEX, KimTestData.RW2_TEST_IMAGE_INDEX, KimTestData.ORF_TEST_IMAGE_INDEX, - KimTestData.HEIC_TEST_IMAGE_FROM_SAMSUNG_INDEX + KimTestData.HEIC_TEST_IMAGE_FROM_SAMSUNG_INDEX, + KimTestData.GEOTIFF_PIXEL_SCALING_INDEX, + KimTestData.GEOTIFF_AFFINE_TRANSFORM_INDEX ) // TODO Support these files as they have XMP diff --git a/src/commonTest/kotlin/com/ashampoo/kim/model/ImageFormatTest.kt b/src/commonTest/kotlin/com/ashampoo/kim/model/ImageFormatTest.kt index 1a891853..ab86fd96 100644 --- a/src/commonTest/kotlin/com/ashampoo/kim/model/ImageFormatTest.kt +++ b/src/commonTest/kotlin/com/ashampoo/kim/model/ImageFormatTest.kt @@ -60,6 +60,8 @@ class ImageFormatTest { index == KimTestData.JXL_CONTAINER_DARKTABLE_INDEX -> ImageFormat.JXL index == KimTestData.JXL_CONTAINER_UNCOMPRESSED_INDEX -> ImageFormat.JXL index == KimTestData.JXL_CONTAINER_COMPRESSED_INDEX -> ImageFormat.JXL + index == KimTestData.GEOTIFF_PIXEL_SCALING_INDEX -> ImageFormat.TIFF + index == KimTestData.GEOTIFF_AFFINE_TRANSFORM_INDEX -> ImageFormat.TIFF else -> null } diff --git a/src/commonTest/kotlin/com/ashampoo/kim/testdata/KimTestData.kt b/src/commonTest/kotlin/com/ashampoo/kim/testdata/KimTestData.kt index b1839a92..f15c103f 100644 --- a/src/commonTest/kotlin/com/ashampoo/kim/testdata/KimTestData.kt +++ b/src/commonTest/kotlin/com/ashampoo/kim/testdata/KimTestData.kt @@ -30,7 +30,7 @@ object KimTestData { private const val RESOURCE_PATH: String = "src/commonTest/resources/com/ashampoo/kim/testdata" - const val TEST_PHOTO_COUNT: Int = 80 + const val TEST_PHOTO_COUNT: Int = 82 const val HIGHEST_JPEG_INDEX: Int = 50 const val PNG_TEST_IMAGE_INDEX: Int = 51 @@ -63,6 +63,8 @@ object KimTestData { const val JXL_CONTAINER_DARKTABLE_INDEX: Int = 78 const val JXL_CONTAINER_UNCOMPRESSED_INDEX: Int = 79 const val JXL_CONTAINER_COMPRESSED_INDEX: Int = 80 + const val GEOTIFF_PIXEL_SCALING_INDEX: Int = 81 + const val GEOTIFF_AFFINE_TRANSFORM_INDEX: Int = 82 @Suppress("MagicNumber") val photoIdsWithExifThumbnail: Set = setOf( @@ -139,6 +141,8 @@ object KimTestData { JXL_CONTAINER_DARKTABLE_INDEX -> "jxl" JXL_CONTAINER_UNCOMPRESSED_INDEX -> "jxl" JXL_CONTAINER_COMPRESSED_INDEX -> "jxl" + GEOTIFF_PIXEL_SCALING_INDEX -> "tif" + GEOTIFF_AFFINE_TRANSFORM_INDEX -> "tif" else -> "jpg" } diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/full/README.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/full/README.txt index 4409129c..7eb62326 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/full/README.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/full/README.txt @@ -23,3 +23,6 @@ photo_77.heic = Samsung Galaxy S21 5G Ultra OOC-HEIC photo_78.jxl = photo_6.jpg -> JXL using converted with darktable 4.6.0 from the JPG photo_79.jxl = photo_6.jpg -> JXL using cjxl with container & without metadata compression photo_80.jxl = photo_6.jpg -> JXL using cjxl with container & with metadata compression + +photo_81.tif = GeoTiff using one tie-point and pixel scaling +photo_82.tif = GeoTiff using full affine transform matrix diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/full/photo_22.html b/src/commonTest/resources/com/ashampoo/kim/testdata/full/photo_22.html deleted file mode 100644 index a6c77fc2..00000000 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/full/photo_22.html +++ /dev/null @@ -1,1261 +0,0 @@ - - - - - HTML Dump (photo_22.jpg) - - - - - - - - - - - - - -
-000c
- 0000
- 000a
- 0016
- 0022
- 002e
- 003a
- 0046
- 0052
- 005e
- 006a
- 0076
- 0080
- 0090
- 00a0
- 00b0
- 00c0
- 00cc
- 00d8
- 00e4
- 00f0
- 00fc
- 0108
- 0114
- 0120
- 012c
- 0138
- 0144
- 0150
- 015c
- 0168
- 0174
- 0180
- 018c
- 0198
- 01a4
- 01b0
- 01bc
- 01c8
- 01d4
- 01e0
- 01ec
- 01f8
- 0204
- 0210
- 021c
- 0228
- 0234
- 0240
- 024c
- 0250
- 0260
- 0270
- 0280
- 0290
- 02a0
- 02b0
- 02c0
- 02d0
- 02e0
- 02f0
- 0300
- 0310
- 0314
- 0320
- 032c
- 0338
- 0344
- 0350
- 035c
- 0360
- 0370
- 0380
- 0390
- 03a0
- 03b0
- 03c0
- 03d0
- 03e0
-  ...
- 2030
- 2040
- 2050
- 2060
- 2070
- 2080
- 2090
- 20a0
- 20b0
- 20c0
- 20d0
- 20e0
- 20f0
- 2100
- 2110
- 2120
-  ...
- 4170
- 4180
- 4190
- 41a0
- 41b0
- 41c0
- 41d0
- 41e0
- 41f0
- 4200
- 4210
- 4220
- 4230
- 4240
- 4250
-  ...
- 4a60
- 4a70
- 4a80
- 4a90
- 4aa0
- 4ab0
- 4ac0
- 4ad0
- 4ae0
- 4af0
- 4b00
- 4b10
- 4b20
- 4b30
- 4b40
-  ...
- 56b0
- 56c0
- 56d0
- 56e0
- 56f0
- 5700
- 5710
- 5720
- 5730
- 5740
- 5750
- 5760
- 5770
- 5780
- 5790
-  ...
- 7b60
- 7b70
- 7b80
- 7b90
- 7ba0
- 7bb0
- 7bc0
- 7bd0
- 7be0
- 7bf0
- 7c00
- 7c10
- 7c20
- 7c30
- 7c40
- 7c50
- 7c60
- 7c70
- 7c80
- 7c90
- 7ca0
- 7cb0
- 7cc0
- 7cd0
- 7ce0
- 7cf0
- 7d00
- 7d10
- 7d20
- 7d30
- 7d40
- 7d50
- 7d60
- 7d70
- 7d80
- 7d90
- 7da0
- 7db0
- 7dc0
- 7dd0
- 7de0
- 7df0
- 7e00
- 7e10
- 7e20
- 7e30
- 7e40
- 7e50
- 7e60
-  ...
-4d5fc0
-4d5fd0
-4d5fe0
-4d5ff0
-4d6000
-4d6010
-4d6020
-4d6030
-
-
            ff d8 ff e1  20 b9 45 78 69 66 00 00
-49 49 2a 00 08 00 00 00  09 00
-0f 01 02 00 06 00 00 00  7a 00 00 00
-10 01 02 00 12 00 00 00  80 00 00 00
-1a 01 05 00 01 00 00 00  92 00 00 00
-1b 01 05 00 01 00 00 00  9a 00 00 00
-28 01 03 00 01 00 00 00  02 00 00 00
-31 01 02 00 07 00 00 00  a2 00 00 00
-32 01 02 00 14 00 00 00  aa 00 00 00
-13 02 03 00 01 00 00 00  01 00 00 00
-69 87 04 00 01 00 00 00  be 00 00 00
-                  12 03  00 00 41 70 70 6c 65 00
-69 50 68 6f 6e 65 20 31  31 20 50 72 6f 20 4d 61
-78 00 2c 01 00 00 01 00  00 00 2c 01 00 00 01 00
-00 00 31 33 2e 33 2e 31  00 00 32 30 32 30 3a 30
-32 3a 32 30 20 30 31 3a  31 31 3a 35 31 00 21 00
-9a 82 05 00 01 00 00 00  50 02 00 00
-9d 82 05 00 01 00 00 00  58 02 00 00
-22 88 03 00 01 00 00 00  02 00 00 00
-27 88 03 00 01 00 00 00  50 00 00 00
-00 90 07 00 04 00 00 00  30 32 33 31
-03 90 02 00 14 00 00 00  60 02 00 00
-04 90 02 00 14 00 00 00  74 02 00 00
-10 90 02 00 07 00 00 00  88 02 00 00
-01 91 07 00 04 00 00 00  01 02 03 00
-01 92 0a 00 01 00 00 00  90 02 00 00
-02 92 05 00 01 00 00 00  98 02 00 00
-03 92 0a 00 01 00 00 00  a0 02 00 00
-04 92 0a 00 01 00 00 00  a8 02 00 00
-07 92 03 00 01 00 00 00  03 00 00 00
-09 92 03 00 01 00 00 00  10 00 00 00
-0a 92 05 00 01 00 00 00  b0 02 00 00
-14 92 03 00 04 00 00 00  b8 02 00 00
-91 92 02 00 03 00 00 00  39 35 00 00
-92 92 02 00 03 00 00 00  39 35 00 00
-00 a0 07 00 04 00 00 00  30 31 30 30
-01 a0 03 00 01 00 00 00  01 00 00 00
-02 a0 04 00 01 00 00 00  d0 0b 00 00
-03 a0 04 00 01 00 00 00  c0 0f 00 00
-17 a2 03 00 01 00 00 00  02 00 00 00
-01 a3 07 00 01 00 00 00  01 00 00 00
-01 a4 03 00 01 00 00 00  07 00 00 00
-02 a4 03 00 01 00 00 00  00 00 00 00
-03 a4 03 00 01 00 00 00  00 00 00 00
-05 a4 03 00 01 00 00 00  34 00 00 00
-06 a4 03 00 01 00 00 00  00 00 00 00
-32 a4 05 00 04 00 00 00  c0 02 00 00
-33 a4 02 00 06 00 00 00  e0 02 00 00
-34 a4 02 00 2b 00 00 00  e6 02 00 00
-                                     00 00 00 00
-01 00 00 00 78 00 00 00  02 00 00 00 01 00 00 00
-32 30 32 30 3a 30 32 3a  31 37 20 31 34 3a 34 37
-3a 34 36 00 32 30 32 30  3a 30 32 3a 31 37 20 31
-34 3a 34 37 3a 34 36 00  2b 30 30 3a 30 30 00 00
-8e 07 02 00 39 4b 00 00  02 00 00 00 01 00 00 00
-22 20 04 00 1f cd 00 00  00 00 00 00 01 00 00 00
-06 00 00 00 01 00 00 00  6a 07 b8 09 cc 02 c9 02
-11 00 00 00 04 00 00 00  06 00 00 00 01 00 00 00
-09 00 00 00 05 00 00 00  02 00 00 00 01 00 00 00
-41 70 70 6c 65 00 69 50  68 6f 6e 65 20 31 31 20
-50 72 6f 20 4d 61 78 20  62 61 63 6b 20 64 75 61
-6c 20 63 61 6d 65 72 61  20 36 6d 6d 20 66 2f 32
-00 00 06 00
-03 01 03 00 01 00 00 00  06 00 00 00
-1a 01 05 00 01 00 00 00  60 03 00 00
-1b 01 05 00 01 00 00 00  68 03 00 00
-28 01 03 00 01 00 00 00  02 00 00 00
-01 02 04 00 01 00 00 00  70 03 00 00
-02 02 04 00 01 00 00 00  3f 1d 00 00
-                                     00 00 00 00
-48 00 00 00 01 00 00 00  48 00 00 00 01 00 00 00
-ff d8 ff db 00 84 00 01  01 01 01 01 01 02 01 01
-02 03 02 02 02 03 04 03  03 03 03 04 05 04 04 04
-04 04 05 06 05 05 05 05  05 05 06 06 06 06 06 06
-06 06 07 07 07 07 07 07  08 08 08 08 08 09 09 09
-09 09 09 09 09 09 09 01  01 01 01 02 02 02 04 02
-02 04 09 06 05 06 09 09  09 09 09 09 09 09 09 09
-09 09 09 09 09 09 09 09  09 09 09 09 09 09 09 09
-09 09 09 09 09 09 09 09  09 09 09 09 09 09 09 09
-                [snip 452 lines]
-0f f6 53 f1 57 89 65 b0  f0 f7 86 6d e4 b9 d6 2f
-2e 16 d6 2b 55 04 39 95  9b 68 56 53 d0 e7 8f 6a
-fe e8 7f 66 9f 85 97 9f  02 3f 67 7f 06 fc 20 d5
-65 13 5e 78 7b 49 b7 b3  9d d7 95 32 a2 0d f8 f6
-0d 90 3d ab ec b8 3e bd  69 b9 46 a6 cb 63 87 10
-e1 6b d8 ee 3c 6d 72 c9  a4 ca a3 d2 bf c7 76 bf
-d7 bf e2 6e b3 f6 4d 26  44 1e 86 bf c8 42 ba 78
-c2 7a d3 8f 6b fe 87 4f  0f c2 ca 4f d0 ff d9 00
-00 ff e1 21 30 68 74 74  70 3a 2f 2f 6e 73 2e 61
-64 6f 62 65 2e 63 6f 6d  2f 78 61 70 2f 31 2e 30
-2f 00 3c 3f 78 70 61 63  6b 65 74 20 62 65 67 69
-6e 3d 22 ef bb bf 22 20  69 64 3d 22 57 35 4d 30
-4d 70 43 65 68 69 48 7a  72 65 53 7a 4e 54 63 7a
-6b 63 39 64 22 3f 3e 20  3c 78 3a 78 6d 70 6d 65
-74 61 20 78 6d 6c 6e 73  3a 78 3d 22 61 64 6f 62
-65 3a 6e 73 3a 6d 65 74  61 2f 22 20 78 3a 78 6d
-                [snip 516 lines]
-20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
-3c 3f 78 70 61 63 6b 65  74 20 65 6e 64 3d 22 77
-22 3f 3e ff e1 08 f0 68  74 74 70 3a 2f 2f 6e 73
-2e 61 64 6f 62 65 2e 63  6f 6d 2f 78 61 70 2f 31
-2e 30 2f 00 3c 78 3a 78  6d 70 6d 65 74 61 20 78
-6d 6c 6e 73 3a 78 3d 22  61 64 6f 62 65 3a 6e 73
-3a 6d 65 74 61 2f 22 20  78 3a 78 6d 70 74 6b 3d
-22 58 4d 50 20 43 6f 72  65 20 35 2e 34 2e 30 22
-3e 0a 20 20 20 3c 72 64  66 3a 52 44 46 20 78 6d
-6c 6e 73 3a 72 64 66 3d  22 68 74 74 70 3a 2f 2f
-                [snip 128 lines]
-20 20 20 20 20 20 20 20  3c 2f 6d 77 67 2d 72 73
-3a 41 70 70 6c 69 65 64  54 6f 44 69 6d 65 6e 73
-69 6f 6e 73 3e 0a 20 20  20 20 20 20 20 20 20 3c
-2f 6d 77 67 2d 72 73 3a  52 65 67 69 6f 6e 73 3e
-0a 20 20 20 20 20 20 3c  2f 72 64 66 3a 44 65 73
-63 72 69 70 74 69 6f 6e  3e 0a 20 20 20 3c 2f 72
-64 66 3a 52 44 46 3e 0a  3c 2f 78 3a 78 6d 70 6d
-65 74 61 3e 0a ff e2 0c  58 49 43 43 5f 50 52 4f
-46 49 4c 45 00 01 01 00  00 0c 48 4c 69 6e 6f 02
-10 00 00 6d 6e 74 72 52  47 42 20 58 59 5a 20 07
-ce 00 02 00 09 00 06 00  31 00 00 61 63 73 70 4d
-53 46 54 00 00 00 00 49  45 43 20 73 52 47 42 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 f6 d6 00
-01 00 00 00 00 d3 2d 48  50 20 20 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-                [snip 182 lines]
-96 de 1c de a2 df 29 df  af e0 36 e0 bd e1 44 e1
-cc e2 53 e2 db e3 63 e3  eb e4 73 e4 fc e5 84 e6
-0d e6 96 e7 1f e7 a9 e8  32 e8 bc e9 46 e9 d0 ea
-5b ea e5 eb 70 eb fb ec  86 ed 11 ed 9c ee 28 ee
-b4 ef 40 ef cc f0 58 f0  e5 f1 72 f1 ff f2 8c f3
-19 f3 a7 f4 34 f4 c2 f5  50 f5 de f6 6d f6 fb f7
-8a f8 19 f8 a8 f9 38 f9  c7 fa 57 fa e7 fb 77 fc
-07 fc 98 fd 29 fd ba fe  4b fe dc ff 6d ff ff ff
-ed 24 ae 50 68 6f 74 6f  73 68 6f 70 20 33 2e 30
-00 38 42 49 4d 03 ed 00  00 00 00 00 10 01 2c 00
-00 00 01 00 01 01 2c 00  00 00 01 00 01 38 42 49
-4d 04 04 00 00 00 00 00  3f 1c 01 5a 00 03 1b 25
-47 1c 02 00 00 02 00 04  1c 02 37 00 08 32 30 32
-30 30 32 31 37 1c 02 3c  00 06 31 34 34 37 34 36
-1c 02 3e 00 08 32 30 32  30 30 32 31 37 1c 02 3f
-                [snip 572 lines]
-6b 75 1b cd 68 1e de 43  d3 a9 42 47 e2 30 89 a9
-09 24 5e 5d 96 d2 e0 db  dd 46 d1 4a bd 41 e8 7d
-c1 f0 c9 81 6d 74 99 68  7e 47 b9 d7 35 a8 ac ad
-d2 91 b1 ac b2 76 58 c7  52 72 70 85 95 e4 fa 3e
-d2 da 2b 4b 48 6d 62 14  8e 04 58 d3 e4 a2 99 9c
-18 b7 23 77 c2 c5 28 d4  a5 f8 4e 46 45 94 5f ff
-d7 ff d9 38 42 49 4d 04  25 00 00 00 00 00 10 bf
-7d 9d ed 99 b2 48 17 86  14 de 65 6e 1f 6b 6f ff
-ed 00 78 50 68 6f 74 6f  73 68 6f 70 20 33 2e 30
-00 38 42 49 4d 04 04 00  00 00 00 00 3f 1c 01 5a
-00 03 1b 25 47 1c 02 00  00 02 00 02 1c 02 3f 00
-06 31 34 34 37 34 36 1c  02 3e 00 08 32 30 32 30
-30 32 31 37 1c 02 37 00  08 32 30 32 30 30 32 31
-37 1c 02 3c 00 06 31 34  34 37 34 36 00 38 42 49
-4d 04 25 00 00 00 00 00  10 10 a0 3b c0 a4 92 fd
-6c c4 b2 98 be 73 82 bb  42 ff ee 00 0e 41 64 6f
-62 65 00 64 c0 00 00 00  01 ff fe 00 34 4f 70 74
-69 6d 69 7a 65 64 20 62  79 20 4a 50 45 47 6d 69
-6e 69 20 33 2e 31 34 2e  31 32 2e 37 31 39 30 31
-37 30 36 20 30 78 30 31  65 65 38 30 33 39 00 ff
-db 00 43 00 05 03 04 04  04 03 05 04 04 04 05 05
-05 05 07 0b 07 07 06 06  07 0d 0a 0a 08 0b 10 0e
-11 10 0f 0e 0f 0f 11 14  19 15 12 13 18 13 0f 10
-16 1e 16 18 1a 1b 1d 1d  1d 12 16 1f 21 1f 1c 21
-1a 1c 1d 1c ff db 00 43  01 05 05 05 07 06 07 0d
-07 07 0d 1c 12 10 12 1c  1c 1c 1c 1c 1c 1c 1c 1c
-1c 1c 1c 1c 1c 1c 1c 1c  1c 1c 1c 1c 1c 1c 1c 1c
-1c 1c 1c 1c 1c 1c 1c 1c  1c 1c 1c 1c 1c 1c 1c 1c
-1c 1c 1c 1c 1c 1c 1c 1c  1c ff c0 00 11 08 0f c0
-0b d0 03 00 11 00 01 11  01 02 11 01 ff c4 00 1d
-00 00 03 01 01 01 01 01  01 01 00 00 00 00 00 00
-00 01 02 03 04 00 05 06  07 08 09 ff c4 00 4c 10
-00 02 02 02 01 04 02 01  04 01 03 03 02 00 01 1d
-01 02 03 11 12 21 04 00  13 22 31 32 41 51 05 14
-23 42 61 06 52 71 33 62  81 24 72 91 07 43 15 82
-a1 f0 08 34 92 b1 c1 53  d1 44 63 a2 b2 e1 f1 16
-25 73 17 c2 83 d2 a3 b3  e2 ff c4 00 1a 01 01 01
-01 01 01 01 01 00 00 00  00 00 00 00 00 00 00 01
-02 03 04 05 06 ff c4 00  34 11 01 01 01 00 01 03
-03 03 02 06 03 01 01 00  00 07 00 01 11 21 02 31
-f0 12 41 61 03 51 71 81  91 a1 b1 c1 d1 e1 f1 04
-13 22 32 42 05 14 52 23  43 62 72 ff da 00 0c 03
-00 00 01 11 02 11 00 3f  00 fa 29 19 5a 79 23 91
-12 10 62 ee 4c 92 32 c4  c2 eb 60 b0 a3 56 48 21
-75 ab d7 8f 5b e9 4e 81  ed bc cb 97 30 4a e2 36
-65 70 f6 e5 49 20 ad 86  52 3e 41 89 fb ba a1 7d
-55 f7 37 24 03 c7 99 39  2c 1a 2c ca d2 a8 45 54
-20 13 ea 8a 9f 14 7b f8  d9 23 6b e2 4c 96 69 52
-26 59 94 0c 81 33 82 23  d4 96 68 ba e2 00 24 5a
-              [snip 314901 lines]
-f6 b3 58 a2 63 14 8f 24  2e 12 31 8a b0 88 be 58
-92 32 08 54 a9 f7 42 c5  e4 7d 75 9d 5d 28 92 73
-c5 82 7c e3 32 29 69 1a  28 f3 b7 aa b6 26 ec 92
-73 b2 7e 39 11 b2 6c 34  d2 42 89 2b b8 82 00 ec
-08 61 8c 01 c2 a0 18 9a  44 63 41 48 2c d6 6a 94
-6a db 4d 35 29 60 9e 38  d5 12 38 bb 4e 22 f2 8c
-af 6c 33 68 92 ac 48 36  d7 ee ea ef ec 10 d3 5f
-ff d9
-
-
    .... .Exif..
-II*.......
-........z...
-............
-............
-............
-(...........
-1...........
-2...........
-............
-i...........
-      ....Apple.
-iPhone 11 Pro Ma
-x.,.......,.....
-..13.3.1..2020:0
-2:20 01:11:51.!.
-........P...
-........X...
-"...........
-'.......P...
-........0231
-........`...
-........t...
-............
-............
-............
-............
-............
-............
-............
-............
-............
-............
-........95..
-........95..
-........0100
-............
-............
-............
-............
-............
-............
-............
-............
-........4...
-............
-2...........
-3...........
-4...+.......
-            ....
-....x...........
-2020:02:17 14:47
-:46.2020:02:17 1
-4:47:46.+00:00..
-....9K..........
-" ..............
-........j.......
-................
-................
-Apple.iPhone 11
-Pro Max back dua
-l camera 6mm f/2
-....
-............
-........`...
-........h...
-(...........
-........p...
-........?...
-            ....
-H.......H.......
-................
-................
-................
-................
-................
-................
-................
-................
-     [snip]
-..S.W.e....m.../
-...+U.9..hVS...j
-...f.....?g... .
-e.^x{I.....2....
-..=...>.i.F..c..
-.k..<mr.......v.
-...n..M&D....B.x
-.z..k..O...O....
-...!0http://ns.a
-dobe.com/xap/1.0
-/.<?xpacket begi
-n="..." id="W5M0
-MpCehiHzreSzNTcz
-kc9d"?> <x:xmpme
-ta xmlns:x="adob
-e:ns:meta/" x:xm
-     [snip]
-
-
-
-
-
-
-<?xpacket end="w
-"?>....http://ns
-.adobe.com/xap/1
-.0/.<x:xmpmeta x
-mlns:x="adobe:ns
-:meta/" x:xmptk=
-"XMP Core 5.4.0"
->.   <rdf:RDF xm
-lns:rdf="http://
-     [snip]
-        </mwg-rs
-:AppliedToDimens
-ions>.         <
-/mwg-rs:Regions>
-.      </rdf:Des
-cription>.   </r
-df:RDF>.</x:xmpm
-eta>....XICC_PRO
-FILE......HLino.
-...mntrRGB XYZ .
-........1..acspM
-SFT....IEC sRGB.
-................
-......-HP  .....
-................
-     [snip]
-......)...6...D.
-..S...c...s.....
-........2...F...
-[...p.........(.
-..@...X...r.....
-....4...P...m...
-......8...W...w.
-....)...K...m...
-.$.Photoshop 3.0
-.8BIM.........,.
-......,......8BI
-M.......?..Z...%
-G.........7..202
-00217..<..144746
-..>..20200217..?
-     [snip]
-ku..h..C..BG.0..
-.$^].....F.J.A.}
-....mt.h~G..5...
-.....vX.Rrp....>
-..+KHmb...X.....
-..#w..(...NFE._.
-...8BIM.%.......
-}....H....en.ko.
-..xPhotoshop 3.0
-.8BIM.......?..Z
-...%G.........?.
-.144746..>..2020
-0217..7..2020021
-7..<..144746.8BI
-M.%........;....
-l....s..B....Ado
-be.d........4Opt
-imized by JPEGmi
-ni 3.14.12.71901
-706 0x01ee8039..
-..C.............
-................
-................
-............!..!
-.......C........
-................
-................
-................
-................
-................
-................
-..............L.
-................
-.....!..."12AQ..
-#Ba.Rq3b.$r..C..
-...4...S.Dc.....
-%s..............
-................
-........4.......
-.............!.1
-..Aa.Qq.........
-."2B..R#Cbr.....
-.......?..).Zy#.
-..b.L.2...`..VH!
-u...[.N.....0J.6
-ep..I ..R>A....}
-U.7$...9,.,...ET
- .....{..#k.L.iR
-&Y...3.#..h...$Z
-     [snip]
-..X.c..$..1....X
-.2.T..B..}u.](.s
-..|.2)i.(....&..
-s.~9..l4.B.+....
-.a......DcAH,.j.
-j.M5)`.8..8.N"..
-.l3h..H6......._
-..
-
-
JPEG header APP1 header Exif header
-TIFF header IFD0 entries
-IFD0-00 Make
-IFD0-01 Model
-IFD0-02 XResolution
-IFD0-03 YResolution
-IFD0-04 ResolutionUnit
-IFD0-05 Software
-IFD0-06 ModifyDate
-IFD0-07 YCbCrPositioning
-IFD0-08 ExifOffset
-Next IFD Make value
-Model value
-XResolution value
-YResolution value Software value [pad byte]
-ModifyDate value ExifIFD entries
-ExifIFD-00 ExposureTime
-ExifIFD-01 FNumber
-ExifIFD-02 ExposureProgram
-ExifIFD-03 ISO
-ExifIFD-04 ExifVersion
-ExifIFD-05 DateTimeOriginal
-ExifIFD-06 CreateDate
-ExifIFD-07 OffsetTime
-ExifIFD-08 ComponentsConfiguration
-ExifIFD-09 ShutterSpeedValue
-ExifIFD-10 ApertureValue
-ExifIFD-11 BrightnessValue
-ExifIFD-12 ExposureCompensation
-ExifIFD-13 MeteringMode
-ExifIFD-14 Flash
-ExifIFD-15 FocalLength
-ExifIFD-16 SubjectArea
-ExifIFD-17 SubSecTimeOriginal
-ExifIFD-18 SubSecTimeDigitized
-ExifIFD-19 FlashpixVersion
-ExifIFD-20 ColorSpace
-ExifIFD-21 ExifImageWidth
-ExifIFD-22 ExifImageHeight
-ExifIFD-23 SensingMethod
-ExifIFD-24 SceneType
-ExifIFD-25 CustomRendered
-ExifIFD-26 ExposureMode
-ExifIFD-27 WhiteBalance
-ExifIFD-28 FocalLengthIn35mmFormat
-ExifIFD-29 SceneCaptureType
-ExifIFD-30 LensInfo
-ExifIFD-31 LensMake
-ExifIFD-32 LensModel
-Next IFD
-ExposureTime value FNumber value
-DateTimeOriginal value
-CreateDate value
-OffsetTime value [pad byte]
-ShutterSpeedValue value ApertureValue value
-BrightnessValue value ExposureCompensation value
-FocalLength value SubjectArea value
-LensInfo value
-
-LensMake value
-LensModel value
-
-[pad byte] IFD1 entries
-IFD1-00 Compression
-IFD1-01 XResolution
-IFD1-02 YResolution
-IFD1-03 ResolutionUnit
-IFD1-04 ThumbnailOffset
-IFD1-05 ThumbnailLength
-Next IFD
-XResolution value YResolution value
-(IFD1:Thumbnail data)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[unused 2 bytes]
-APP1 XMP segment
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-APP1 XMP segment
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-APP2 ICC_Profile segment
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-APP13 Photoshop segment
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-APP13 Photoshop segment
-
-
-
-
-
-
-
-APP14 Adobe segment
-COM Comment segment
-
-
-[JPEG DQT]
-
-
-
-
-[JPEG DQT]
-
-
-
-[JPEG SOF0]
-[JPEG DHT]
-
-[JPEG DHT]
-
-
-
-
-[JPEG DHT]
-
-[JPEG DHT]
-
-
-[JPEG Image Data]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-JPEG EOI
-
-
-
-
JPEG header
SOI Marker
(2 bytes)
-
APP1 header
Data size: 8375 bytes
(4 bytes)
-
Exif header
APP1 data type: Exif
(6 bytes)
-
TIFF header
Byte order: Little endian
Identifier: 0x002a
IFD0 offset: 0x0008
(8 - bytes) -
-
IFD0 entries
Entry count: 9
(2 bytes)
-
IFD0-00 Make
Tag ID: 0x010f
Format: string[6]
Size: 6 bytes
Value - offset: 0x007a
File offset: 0x0086
Value: Apple -
-
IFD0-01 Model
Tag ID: 0x0110
Format: string[18]
Size: 18 - bytes
Value offset: 0x0080
File offset: 0x008c
Value: iPhone 11 Pro Max -
-
IFD0-02 XResolution
Tag ID: 0x011a
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x0092
File offset: 0x009e
Value: 300 (300/1) -
-
IFD0-03 YResolution
Tag ID: 0x011b
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x009a
File offset: 0x00a6
Value: 300 (300/1) -
-
IFD0-04 ResolutionUnit
Tag ID: 0x0128
Format: int16u[1]
Size: 2 bytes
Value: 2 -
-
IFD0-05 Software
Tag ID: 0x0131
Format: string[7]
Size: 7 - bytes
Value offset: 0x00a2
File offset: 0x00ae
Value: 13.3.1 -
-
IFD0-06 ModifyDate
Tag ID: 0x0132
Format: string[20]
Size: 20 - bytes
Value offset: 0x00aa
File offset: 0x00b6
Value: 2020:02:20 01:11:51 -
-
IFD0-07 YCbCrPositioning
Tag ID: 0x0213
Format: int16u[1]
Size: 2 bytes
Value: 1 -
-
IFD0-08 ExifOffset
Tag ID: 0x8769
Format: int32u[1]
Size: 4 bytes
Value: 0x00be -
-
Next IFD
IFD1 offset: 0x0312
(4 bytes)
-
ExifIFD entries
Entry count: 33
(2 bytes)
-
ExifIFD-00 ExposureTime
Tag ID: 0x829a
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x0250
File offset: 0x025c
Value: 0.008333333333 (1/120) -
-
ExifIFD-01 FNumber
Tag ID: 0x829d
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x0258
File offset: 0x0264
Value: 2 (2/1) -
-
ExifIFD-02 ExposureProgram
Tag ID: 0x8822
Format: int16u[1]
Size: 2 bytes
Value: - 2 -
-
ExifIFD-03 ISO
Tag ID: 0x8827
Format: int16u[1]
Size: 2 bytes
Value: 80
-
ExifIFD-04 ExifVersion
Tag ID: 0x9000
Format: undef[4]
Size: 4 bytes
Value: 0231 -
-
ExifIFD-05 DateTimeOriginal
Tag ID: 0x9003
Format: string[20]
Size: - 20 bytes
Value offset: 0x0260
File offset: 0x026c
Value: 2020:02:17 14:47:46 -
-
ExifIFD-06 CreateDate
Tag ID: 0x9004
Format: string[20]
Size: - 20 bytes
Value offset: 0x0274
File offset: 0x0280
Value: 2020:02:17 14:47:46 -
-
ExifIFD-07 OffsetTime
Tag ID: 0x9010
Format: string[7]
Size: 7 - bytes
Value offset: 0x0288
File offset: 0x0294
Value: +00:00 -
-
ExifIFD-08 ComponentsConfiguration
Tag ID: 0x9101
Format: undef[4] read as - int8u[4]
Size: 4 bytes
Value: 1 2 3 0 -
-
ExifIFD-09 ShutterSpeedValue
Tag ID: 0x9201
Format: - rational64s[1]
Size: 8 bytes
Value offset: 0x0290
File offset: 0x029c
Value: 6.906891001 (133006/19257) -
-
ExifIFD-10 ApertureValue
Tag ID: 0x9202
Format: - rational64u[1]
Size: 8 bytes
Value offset: 0x0298
File offset: 0x02a4
Value: 2 (2/1) -
-
ExifIFD-11 BrightnessValue
Tag ID: 0x9203
Format: - rational64s[1]
Size: 8 bytes
Value offset: 0x02a0
File offset: 0x02ac
Value: 5.14882596 (270370/52511) -
-
ExifIFD-12 ExposureCompensation
Tag ID: 0x9204
Format: - rational64s[1]
Size: 8 bytes
Value offset: 0x02a8
File offset: 0x02b4
Value: 0 (0/1) -
-
ExifIFD-13 MeteringMode
Tag ID: 0x9207
Format: int16u[1]
Size: 2 bytes
Value: 3 -
-
ExifIFD-14 Flash
Tag ID: 0x9209
Format: int16u[1]
Size: 2 bytes
Value: 0x10 -
-
ExifIFD-15 FocalLength
Tag ID: 0x920a
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x02b0
File offset: 0x02bc
Value: 6 (6/1) -
-
ExifIFD-16 SubjectArea
Tag ID: 0x9214
Format: int16u[4]
Size: - 8 bytes
Value offset: 0x02b8
File offset: 0x02c4
Value: 1898 2488 716 713 -
-
ExifIFD-17 SubSecTimeOriginal
Tag ID: 0x9291
Format: string[3]
Size: 3 bytes
Value: - 95 -
-
ExifIFD-18 SubSecTimeDigitized
Tag ID: 0x9292
Format: string[3]
Size: 3 bytes
Value: - 95 -
-
ExifIFD-19 FlashpixVersion
Tag ID: 0xa000
Format: undef[4]
Size: 4 bytes
Value: - 0100 -
-
ExifIFD-20 ColorSpace
Tag ID: 0xa001
Format: int16u[1]
Size: 2 bytes
Value: 0x1 -
-
ExifIFD-21 ExifImageWidth
Tag ID: 0xa002
Format: int32u[1]
Size: 4 bytes
Value: - 3024 -
-
ExifIFD-22 ExifImageHeight
Tag ID: 0xa003
Format: int32u[1]
Size: 4 bytes
Value: - 4032 -
-
ExifIFD-23 SensingMethod
Tag ID: 0xa217
Format: int16u[1]
Size: 2 bytes
Value: 2 -
-
ExifIFD-24 SceneType
Tag ID: 0xa301
Format: undef[1]
Size: 1 bytes
Value: 1 -
-
ExifIFD-25 CustomRendered
Tag ID: 0xa401
Format: int16u[1]
Size: 2 bytes
Value: - 7 -
-
ExifIFD-26 ExposureMode
Tag ID: 0xa402
Format: int16u[1]
Size: 2 bytes
Value: 0 -
-
ExifIFD-27 WhiteBalance
Tag ID: 0xa403
Format: int16u[1]
Size: 2 bytes
Value: 0 -
-
ExifIFD-28 FocalLengthIn35mmFormat
Tag ID: 0xa405
Format: int16u[1]
Size: 2 - bytes
Value: 52 -
-
ExifIFD-29 SceneCaptureType
Tag ID: 0xa406
Format: int16u[1]
Size: 2 bytes
Value: - 0 -
-
ExifIFD-30 LensInfo
Tag ID: 0xa432
Format: rational64u[4]
Size: - 32 bytes
Value offset: 0x02c0
File offset: 0x02cc
Value: 4.25 6 1.8 2 (17/4 6/1 9/5 2/1) -
-
ExifIFD-31 LensMake
Tag ID: 0xa433
Format: string[6]
Size: 6 - bytes
Value offset: 0x02e0
File offset: 0x02ec
Value: Apple -
-
ExifIFD-32 LensModel
Tag ID: 0xa434
Format: string[43]
Size: - 43 bytes
Value offset: 0x02e6
File offset: 0x02f2
Value: iPhone 11 Pro Max back dual [...] -
-
Next IFD
Next IFD offset: 0x0000
(4 bytes)
-
IFD1 entries
Entry count: 6
(2 bytes)
-
IFD1-00 Compression
Tag ID: 0x0103
Format: int16u[1]
Size: 2 bytes
Value: 6 -
-
IFD1-01 XResolution
Tag ID: 0x011a
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x0360
File offset: 0x036c
Value: 72 (72/1) -
-
IFD1-02 YResolution
Tag ID: 0x011b
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x0368
File offset: 0x0374
Value: 72 (72/1) -
-
IFD1-03 ResolutionUnit
Tag ID: 0x0128
Format: int16u[1]
Size: 2 bytes
Value: 2 -
-
IFD1-04 ThumbnailOffset
Tag ID: 0x0201
Format: int32u[1]
Size: 4 bytes
Value: - 0x0370 -
-
IFD1-05 ThumbnailLength
Tag ID: 0x0202
Format: int32u[1]
Size: 4 bytes
Value: - 7487 -
-
Next IFD
IFD2 offset: 0x0000
(4 bytes)
-
(IFD1:Thumbnail data)
Size: 7487 bytes
-
APP1 XMP segment
(8498 bytes)
-
APP1 XMP segment
(2290 bytes)
-
APP2 ICC_Profile segment
(3162 bytes)
-
APP13 Photoshop segment
(9392 bytes)
-
APP13 Photoshop segment
(122 bytes)
-
APP14 Adobe segment
(16 bytes)
-
COM Comment segment
(54 bytes)
-
[JPEG DQT]
(69 bytes)
-
[JPEG DQT]
(69 bytes)
-
[JPEG SOF0]
(19 bytes)
-
[JPEG DHT]
(31 bytes)
-
[JPEG DHT]
(78 bytes)
-
[JPEG DHT]
(28 bytes)
-
[JPEG DHT]
(54 bytes)
-
[JPEG Image Data]
(5038645 bytes)
-
JPEG EOI
(2 bytes)
- - diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/full/photo_81.tif b/src/commonTest/resources/com/ashampoo/kim/testdata/full/photo_81.tif new file mode 100644 index 0000000000000000000000000000000000000000..8d8f066e7dac7aa36819e4397bb88244e86c3ca5 GIT binary patch literal 458 zcmebD)MDUZU|UgUWHWJ>!?!Qb<| z1Ij!cU}`}oGl5*n0x}sGs=z>IWOyb33?48aXx9Qn41si2%mI4y&wn6b{mb+Z03!@1 A@c;k- literal 0 HcmV?d00001 diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/full/photo_82.tif b/src/commonTest/resources/com/ashampoo/kim/testdata/full/photo_82.tif new file mode 100644 index 0000000000000000000000000000000000000000..9bb36dc3d95bd2626f143e36054f92ab25325abf GIT binary patch literal 502 zcmebD)MDUZU|UgUWHSTBxquSPP;rnBHYl43$mU~Y0-GWLR3pg9 z0yg6XkS&B{jwqB3GD{4~ZUC~yq3Zd7Y$--ouwDtEUTG*>0mzm?GDj9@7dud`22flB zDh_gkEfPBz$OhSC0913Mm4`t9$TkDAGut6`=Z^g zxYq)|C%xMTlTTSQSz~&HhXagH9{s@{oKN>0PYAeE&u=k literal 0 HcmV?d00001 diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/metadata.csv b/src/commonTest/resources/com/ashampoo/kim/testdata/metadata.csv index 133f9db0..89d0d623 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/metadata.csv +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/metadata.csv @@ -78,3 +78,5 @@ photo_77.heic;null;null;ROTATE_RIGHT;1696689965871;null;null;samsung;SM-G998B;nu photo_78.jxl;null;null;STANDARD;1551068056000;null;null;SONY;DSC-RX100;null;28-100mm F1.8-4.9;125;0.004;8.0;10.4;false;0;[outdoors, reptile, sea turtle, tortoise, water];[];[];null;null photo_79.jxl;null;null;null;1551068056000;null;null;SONY;DSC-RX100;null;28-100mm F1.8-4.9;125;0.004;8.0;10.4;false;0;[];[];[];256 x 144;11246 photo_80.jxl;null;null;null;null;null;null;null;null;null;null;null;null;null;null;false;null;[];[];[];null;null +photo_81.tif;1;1;STANDARD;null;null;null;null;null;null;null;null;null;null;null;false;null;[];[];[];null;null +photo_82.tif;1;1;STANDARD;null;null;null;null;null;null;null;null;null;null;null;false;null;[];[];[];null;null diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_1.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_1.txt index 39a312aa..ae037532 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_1.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_1.txt @@ -75,7 +75,7 @@ Little-endian (Intel, II) 0000000858 0x0004 Unknown = [34 shorts] 0000000870 0x0035 Unknown = [16, 180, 17, 0] 0000000882 0x0093 Unknown = [32 shorts] -0000000894 0x00a0 Unknown = [14 shorts] +0000000894 0x00a0 Unknown = [28, 0, 0, 0, 0, 0, 0, 0, -1, 2600, 132, 0, 0, 0] 0000000906 0x0002 Unknown = [0, 250, 2838, 23076] 0000000918 0x0003 Unknown = [0, 0, 0, 0] 0000000930 0x0006 CanonImageType = Canon EOS 70D @@ -100,7 +100,7 @@ Little-endian (Intel, II) 0000001158 0x4010 Unknown = 0000001170 0x4011 Unknown = [252 bytes] 0000001182 0x4012 Unknown = -0000001194 0x4013 Unknown = [11 ints] +0000001194 0x4013 Unknown = [44, 0, 0, 10, -1, 0, 10, 0, 10, 0, 10] 0000001206 0x4015 Unknown = [456 bytes] 0000001218 0x4016 Unknown = [28, 0, 1, 0, 0, 1, 1] 0000001230 0x4018 Unknown = [28, 0, 3, 0, 0, 3, 1] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_15.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_15.txt index bbbf2956..d2c4cfb4 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_15.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_15.txt @@ -114,9 +114,9 @@ Big-endian (Motorola, MM) 0000003372 0x0022 Unknown = -1 0000003384 0x0023 Unknown = [68 bytes] 0000003396 0x0024 Unknown = [0x3c, 0x00, 0x01, 0x02] -0000003408 0x0025 Unknown = [14 bytes] +0000003408 0x0025 Unknown = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 0000003420 0x002a Unknown = 3 -0000003432 0x002b Unknown = [16 bytes] +0000003432 0x002b Unknown = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 0000003444 0x002c Unknown = [574 bytes] 0000003456 0x002d Unknown = [0, 0, 0] 0000003468 0x0035 Unknown = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00] @@ -124,7 +124,7 @@ Big-endian (Motorola, MM) 0000003492 0x003c Unknown = 1 0000003504 0x003e Unknown = 1 0000003516 0x003f Unknown = [Invalid rational (0/0), Invalid rational (0/0)] -0000003528 0x0040 Unknown = [12 bytes] +0000003528 0x0040 Unknown = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 0000003540 0x0042 Unknown = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00] 0000003552 0x0083 LensType = 14 0000003564 0x0084 Lens = [Invalid rational (0/0), Invalid rational (0/0), Invalid rational (0/0), Invalid rational (0/0)] @@ -144,7 +144,7 @@ Big-endian (Motorola, MM) 0000003732 0x00a8 Unknown = [51 bytes] 0000003744 0x00ab Unknown = f ] u/B�s�� -0000003756 0x00b0 Unknown = [16 bytes] +0000003756 0x00b0 Unknown = [0x83, 0x5e, 0x92, 0x1f, 0x05, 0x44, 0xdc, 0xcd, 0x17, 0xba, 0xb6, 0x0b, 0xb9, 0xc0, 0x20, 0xd9] 0000003768 0x00b1 Unknown = 4 0000003780 0x00b6 Unknown = [0xeb, 0x56, 0x1a, 0x37, 0xad, 0x7c, 0xa4, 0x25] 0000003792 0x00b7 Unknown = [30 bytes] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_18.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_18.txt index c34aaeba..56b68e41 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_18.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_18.txt @@ -95,7 +95,7 @@ Little-endian (Intel, II) 0000001132 0x0098 Unknown = [1, 0, 514, 0] 0000001144 0x0099 Unknown = [74 ints] 0000001156 0x009a Unknown = [80480646, 99222116, 69469675, -196607, 16777473] -0000001168 0x00a0 Unknown = [14 shorts] +0000001168 0x00a0 Unknown = [257, 0, 1202, 2493, 2489, 1465, 556, 186, 184, 29, 84, 482, 483, 759] 0000001180 0x00aa Unknown = [1129, 1893, 1897, 375, 1139, 2274] 0000001192 0x00b4 Unknown = 2 0000001204 0x00d0 Unknown = 0 diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_21.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_21.txt index c683b148..17763904 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_21.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_21.txt @@ -89,16 +89,16 @@ Big-endian (Motorola, MM) 0000001153 0x0022 Unknown = 7 0000001165 0x0023 Unknown = [68 bytes] 0000001177 0x0024 Unknown = [0xe0, 0x01, 0x00, 0x00] -0000001189 0x0025 Unknown = [14 bytes] +0000001189 0x0025 Unknown = [0x00, 0x02, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xf2, 0x02, 0x00, 0x00, 0x09, 0x00, 0x02] 0000001201 0x002a Unknown = 0 -0000001213 0x002b Unknown = [16 bytes] +0000001213 0x002b Unknown = [0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x0b, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00] 0000001225 0x002c Unknown = [574 bytes] 0000001237 0x0035 Unknown = [0x4c, 0x00, 0x00, 0xb9, 0x00, 0x07, 0x00, 0x04] 0000001249 0x003b Unknown = [0/3137339647 (0.0), 134219520/2315255808 (0.057972), 3204448333/16777984 (190.991262), 0/3221225472 (0.0)] 0000001261 0x003c Unknown = 1 0000001273 0x003e Unknown = 1 0000001285 0x003f Unknown = [134219520/-1845493760 (-0.072728), 77/1174405120 (0.0)] -0000001297 0x0040 Unknown = [12 bytes] +0000001297 0x0040 Unknown = [0x49, 0x4e, 0x45, 0x20, 0x20, 0x20, 0x00, 0x41, 0x55, 0x54, 0x4f, 0x32] 0000001309 0x0041 Unknown = [0x20, 0x20, 0x20, 0x20, 0x20, 0x20] 0000001321 0x0042 Unknown = [0x00, 0x00, 0x00, 0x4d, 0x41, 0x4e] 0000001333 0x0083 LensType = 0 @@ -116,7 +116,7 @@ Big-endian (Motorola, MM) 0000001477 0x00a3 Unknown = 0 0000001489 0x00a7 ShutterCount = 55933 0000001501 0x00a8 Unknown = [51 bytes] -0000001513 0x00b0 Unknown = [16 bytes] +0000001513 0x00b0 Unknown = [0xb1, 0x89, 0xfe, 0xab, 0x8c, 0x54, 0xf8, 0x45, 0xa4, 0xa2, 0x67, 0xf3, 0x46, 0x60, 0x41, 0x5d] 0000001525 0x00b1 Unknown = 6 0000001537 0x00b6 Unknown = [0x58, 0x2e, 0x8b, 0x4f, 0xdb, 0x2c, 0x44, 0x24] 0000001549 0x00b7 Unknown = [30 bytes] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_28.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_28.txt index b669ad0c..784c91e3 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_28.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_28.txt @@ -96,7 +96,7 @@ Little-endian (Intel, II) 0000001022 0x0022 Unknown = [208 shorts] 0000001034 0x0023 Unknown = [8, 0] 0000001046 0x0027 Unknown = [21 shorts] -0000001058 0x0028 Unknown = [16 bytes] +0000001058 0x0028 Unknown = [0x6d, 0x0c, 0xe7, 0x33, 0xaf, 0xf8, 0xd1, 0xdc, 0x5a, 0xeb, 0x38, 0x82, 0x5e, 0x81, 0x04, 0x2f] 0000001070 0x002d Unknown = 0 0000001082 0x002e Unknown = [27 shorts] 0000001094 0x002f Unknown = [17 shorts] @@ -112,7 +112,7 @@ Little-endian (Intel, II) 0000001214 0x0096 InternalSerialNumber = SA0151220 0000001226 0x0099 Unknown = [34 ints] 0000001238 0x009a Unknown = [0, 2304, 1536, 0, 0] -0000001250 0x00a0 Unknown = [14 shorts] +0000001250 0x00a0 Unknown = [28, 0, 0, -1, -1, -1, -1, -1, -1, -1, 132, 0, 9, -1] 0000001262 0x00aa Unknown = [12, 392, 545, 546, 2614, 0] 0000001274 0x00d0 Unknown = 0 0000001286 0x4008 Unknown = [135, 135, 135] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_31.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_31.txt index 8730583c..9b279e73 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_31.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_31.txt @@ -93,7 +93,7 @@ Little-endian (Intel, II) 0000000970 0x0098 Unknown = [0, 0, 0, 0] 0000000982 0x0099 Unknown = [116 ints] 0000000994 0x009a Unknown = [0, 5472, 3648, 0, 0] -0000001006 0x00a0 Unknown = [14 shorts] +0000001006 0x00a0 Unknown = [28, 0, 3, 0, 0, 0, 0, 0, -1, 5200, 135, 0, 0, 0] 0000001018 0x00aa Unknown = [12, 595, 1024, 1024, 515, 0] 0000001030 0x00b4 Unknown = 1 0000001042 0x00d0 Unknown = 0 @@ -104,7 +104,7 @@ Little-endian (Intel, II) 0000001102 0x4010 Unknown = 0000001114 0x4011 Unknown = [252 bytes] 0000001126 0x4012 Unknown = -0000001138 0x4013 Unknown = [11 ints] +0000001138 0x4013 Unknown = [44, 0, 0, 10, -1, 0, 10, 0, 10, 0, 10] 0000001150 0x4015 Unknown = [456 bytes] 0000001162 0x4016 Unknown = [28, 0, 1, 0, 1, 0, 0] 0000001174 0x4018 Unknown = [28, 0, 0, 0, 0, 0, 1] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_34.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_34.txt index 1793c546..4d8a35f4 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_34.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_34.txt @@ -84,8 +84,8 @@ Little-endian (Intel, II) 0000001042 0x0022 Unknown = -1 0000001054 0x0023 Unknown = [58 bytes] 0000001066 0x0024 Unknown = [0x3c, 0x00, 0x01, 0x02] -0000001078 0x0025 Unknown = [14 bytes] -0000001090 0x002b Unknown = [16 bytes] +0000001078 0x0025 Unknown = [0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00] +0000001090 0x002b Unknown = [0x4b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4e, 0x69, 0x6b, 0x6f, 0x6e, 0x00, 0x02, 0x00] 0000001102 0x002c Unknown = [574 bytes] 0000001114 0x002d Unknown = [0, 3589, 4] 0000001126 0x0032 Unknown = [0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00] @@ -106,7 +106,7 @@ Little-endian (Intel, II) 0000001306 0x00a3 Unknown = 0 0000001318 0x00a7 ShutterCount = 4954 0000001330 0x00ab Unknown = -0000001342 0x00b0 Unknown = [16 bytes] +0000001342 0x00b0 Unknown = [0x45, 0x50, 0x68, 0x8d, 0xbf, 0xfe, 0x4a, 0xa3, 0x09, 0x7c, 0xfc, 0x89, 0x23, 0xca, 0x7e, 0x3f] 0000001354 0x00b1 Unknown = 4 0000001366 0x00b6 Unknown = [0x0d, 0xe8, 0xd0, 0xc5, 0xc7, 0xd6, 0xf2, 0x1b] 0000001378 0x00b7 Unknown = [30 bytes] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_44.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_44.txt index 4892c2e5..d9cc2d08 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_44.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_44.txt @@ -105,10 +105,10 @@ Little-endian (Intel, II) 0000001128 0x4010 Unknown = 0000001140 0x4011 Unknown = [252 bytes] 0000001152 0x4012 Unknown = -0000001164 0x4013 Unknown = [11 ints] +0000001164 0x4013 Unknown = [44, 3, 0, 0, 0, 30, 10, 30, 10, 0, 10] 0000001176 0x4015 Unknown = [632 bytes] 0000001188 0x4016 Unknown = [40, 0, 1, 0, 0, 1, 1, 0, 1, 0] -0000001200 0x4018 Unknown = [13 ints] +0000001200 0x4018 Unknown = [52, 0, 3, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0] 0000001212 0x4019 LensInfo = [30 bytes] 0000001224 0x4020 Unknown = [32, 0, 0, 0, 2147483647, 0, 1, 1] 0000001236 0x4024 Unknown = [53 ints] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_49.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_49.txt index 65709ed8..944398a0 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_49.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_49.txt @@ -91,7 +91,7 @@ Little-endian (Intel, II) 0000001128 0x0098 Unknown = [0, 0, 0, 0] 0000001140 0x0099 Unknown = [74 ints] 0000001152 0x009a Unknown = [0, 5184, 3456, 0, 0] -0000001164 0x00a0 Unknown = [14 shorts] +0000001164 0x00a0 Unknown = [28, 0, 3, 0, 0, 0, 0, 0, -1, 5000, 129, 0, 0, 0] 0000001176 0x00aa Unknown = [12, 401, 1024, 1024, 792, 0] 0000001188 0x00b4 Unknown = 1 0000001200 0x00d0 Unknown = 0 diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_53.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_53.txt index f691d8e9..2a92f487 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_53.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_53.txt @@ -111,7 +111,7 @@ Little-endian (Intel, II) 0000001210 0x000f Unknown = [232 shorts] 0000001222 0x0001 CanonCameraSettings = [49 shorts] 0000001234 0x0093 Unknown = [32 shorts] -0000001246 0x00a0 Unknown = [14 shorts] +0000001246 0x00a0 Unknown = [28, 0, 0, 0, 0, 0, 0, 0, -1, 2600, 132, 0, 0, 0] 0000001258 0x0004 Unknown = [34 shorts] 0000001270 0x0035 Unknown = [16, 180, 17, 0] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_57.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_57.txt index 72c88533..cdf9e903 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_57.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_57.txt @@ -117,7 +117,7 @@ Little-endian (Intel, II) 0000001214 0x0098 Unknown = [0, 0, 0, 0] 0000001226 0x0099 Unknown = [74 ints] 0000001238 0x009a Unknown = [0, 5184, 3456, 0, 0] -0000001250 0x00a0 Unknown = [14 shorts] +0000001250 0x00a0 Unknown = [28, 0, 3, 0, 0, 0, 0, 0, -1, 5000, 129, 0, 0, 0] 0000001262 0x00aa Unknown = [12, 401, 1024, 1024, 792, 0] 0000001274 0x00b4 Unknown = 1 0000001286 0x00d0 Unknown = 0 diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_66.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_66.txt index 8e72b1b1..1684b0ef 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_66.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_66.txt @@ -45,7 +45,7 @@ Little-endian (Intel, II) 0000000466 0xc634 Unknown = [45224 bytes] 0000000478 0xc65a Unknown = 17 0000000490 0xc65b Unknown = 21 -0000000502 0xc65d Unknown = [16 bytes] +0000000502 0xc65d Unknown = [0x2e, 0xc3, 0x25, 0x29, 0x70, 0xf6, 0x2a, 0xf0, 0x9e, 0x5b, 0xe2, 0xe2, 0xaa, 0xe6, 0xe3, 0x2f] 0000000514 0xc68b Unknown = photo_57.cr2 0000000526 0xc6f3 Unknown = com.adobe 0000000538 0xc6f4 Unknown = com.adobe @@ -56,13 +56,13 @@ Little-endian (Intel, II) 0000000598 0xc715 Unknown = [7286/10000 (0.7286), 1385/10000 (0.1385), 972/10000 (0.0972), 2600/10000 (0.26), 9468/10000 (0.9468), -2068/10000 (-0.2068), 93/10000 (0.0093), -2268/10000 (-0.2268), 10426/10000 (1.0426)] 0000000610 0xc716 Unknown = Adobe DNG Converter 0000000622 0xc717 Unknown = 15.4 -0000000634 0xc719 Unknown = [16 bytes] +0000000634 0xc719 Unknown = [0xaf, 0xda, 0x71, 0x6c, 0x9c, 0x81, 0xbc, 0x81, 0xa5, 0x9a, 0xa6, 0xda, 0xdf, 0xfe, 0xbb, 0x69] 0000000646 0xc71a Unknown = 2 0000000658 0xc71b Unknown = 2023-07-26T06:11:34+02:00 0000000670 0xc725 Unknown = [36, 8, 16] 0000000682 0xc726 Unknown = [13824 floats] 0000000694 0xc761 Unknown = [1.366262302586404E-4, 3.882895441490322E-7] -0000000706 0xc7a7 Unknown = [16 bytes] +0000000706 0xc7a7 Unknown = [0x67, 0x76, 0x02, 0xf9, 0x81, 0x09, 0x13, 0xa4, 0xf5, 0xcb, 0x71, 0xc8, 0x83, 0x3d, 0x77, 0xf1] ---- Directory ExifIFD @ 108934 ---- 0000108936 0x829a ExposureTime = 1/60 (0.016667) @@ -145,7 +145,7 @@ Little-endian (Intel, II) 0000112526 0x0214 ReferenceBlackWhite = [0/1 (0.0), 255/1 (255.0), 128/1 (128.0), 255/1 (255.0), 128/1 (128.0), 255/1 (255.0)] 0000112538 0xc716 Unknown = Adobe DNG Converter 0000112550 0xc717 Unknown = 15.4 -0000112562 0xc719 Unknown = [16 bytes] +0000112562 0xc719 Unknown = [0xaf, 0xda, 0x71, 0x6c, 0x9c, 0x81, 0xbc, 0x81, 0xa5, 0x9a, 0xa6, 0xda, 0xdf, 0xfe, 0xbb, 0x69] 0000112574 0xc71a Unknown = 2 0000112586 0xc71b Unknown = 2023-07-26T06:11:34+02:00 diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_67.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_67.txt index 6e2d962c..f4e556a3 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_67.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_67.txt @@ -44,7 +44,7 @@ Little-endian (Intel, II) 0000000454 0xc634 Unknown = [23478 bytes] 0000000466 0xc65a Unknown = 17 0000000478 0xc65b Unknown = 21 -0000000490 0xc65d Unknown = [16 bytes] +0000000490 0xc65d Unknown = [0x0e, 0x89, 0xd7, 0x4a, 0x2a, 0x84, 0x12, 0x84, 0x35, 0xf3, 0x15, 0x43, 0x02, 0x8e, 0x66, 0xaf] 0000000502 0xc68b Unknown = photo_58.raf 0000000514 0xc6f3 Unknown = com.adobe 0000000526 0xc6f4 Unknown = com.adobe @@ -58,13 +58,13 @@ Little-endian (Intel, II) 0000000622 0xc715 Unknown = [3970/10000 (0.397), 4180/10000 (0.418), 1493/10000 (0.1493), 2190/10000 (0.219), 7369/10000 (0.7369), 441/10000 (0.0441), 1021/10000 (0.1021), 17/10000 (0.0017), 7213/10000 (0.7213)] 0000000634 0xc716 Unknown = Adobe DNG Converter 0000000646 0xc717 Unknown = 15.4 -0000000658 0xc719 Unknown = [16 bytes] +0000000658 0xc719 Unknown = [0xce, 0x65, 0xf3, 0x94, 0x57, 0x45, 0xe1, 0xce, 0xa3, 0x46, 0x10, 0x06, 0xcc, 0x49, 0x24, 0x41] 0000000670 0xc71a Unknown = 2 0000000682 0xc71b Unknown = 2023-07-26T06:11:34+02:00 0000000694 0xc725 Unknown = [36, 8, 16] 0000000706 0xc726 Unknown = [13824 floats] 0000000718 0xc761 Unknown = [6.145418478675516E-5, 5.6966083730003E-8, 6.068665598535134E-5, 5.223482066536774E-8, 5.957579919127184E-5, 5.131278317836205E-8] -0000000730 0xc7a7 Unknown = [16 bytes] +0000000730 0xc7a7 Unknown = [0x73, 0x44, 0x1d, 0x5b, 0xdd, 0xac, 0x26, 0x55, 0x02, 0x44, 0xbe, 0xe8, 0x72, 0x3a, 0x5b, 0xc7] ---- Directory ExifIFD @ 151888 ---- 0000151890 0x829a ExposureTime = 1/40 (0.025) @@ -152,7 +152,7 @@ Little-endian (Intel, II) 0000157074 0x0214 ReferenceBlackWhite = [0/1 (0.0), 255/1 (255.0), 128/1 (128.0), 255/1 (255.0), 128/1 (128.0), 255/1 (255.0)] 0000157086 0xc716 Unknown = Adobe DNG Converter 0000157098 0xc717 Unknown = 15.4 -0000157110 0xc719 Unknown = [16 bytes] +0000157110 0xc719 Unknown = [0xce, 0x65, 0xf3, 0x94, 0x57, 0x45, 0xe1, 0xce, 0xa3, 0x46, 0x10, 0x06, 0xcc, 0x49, 0x24, 0x41] 0000157122 0xc71a Unknown = 2 0000157134 0xc71b Unknown = 2023-07-26T06:11:34+02:00 @@ -167,8 +167,8 @@ Little-endian (Intel, II) 0000157382 0x011c PlanarConfiguration = 1 0000157394 0x0142 TileWidth = 512 0000157406 0x0143 TileLength = 464 -0000157418 0x0144 TileOffsets = [12 ints] -0000157430 0x0145 TileByteCounts = [12 ints] +0000157418 0x0144 TileOffsets = [341094, 369574, 398050, 430370, 444172, 468082, 502394, 540340, 562818, 578286, 603574, 627630] +0000157430 0x0145 TileByteCounts = [28480, 28475, 32320, 13802, 23909, 34312, 37945, 22477, 15467, 25288, 24056, 12976] 0000157442 0xc61a Unknown = [0/1 (0.0), 43/1 (43.0), 51/1 (51.0)] 0000157454 0xc716 Unknown = Adobe DNG Converter 0000157466 0xc717 Unknown = 15.4 diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_68.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_68.txt index 8ce5e63a..b303daee 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_68.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_68.txt @@ -43,7 +43,7 @@ Little-endian (Intel, II) 0000000442 0xc634 Unknown = [123120 bytes] 0000000454 0xc65a Unknown = 17 0000000466 0xc65b Unknown = 21 -0000000478 0xc65d Unknown = [16 bytes] +0000000478 0xc65d Unknown = [0xe2, 0x33, 0x18, 0x65, 0x5e, 0x8c, 0x48, 0x55, 0x0e, 0xd2, 0x71, 0xc3, 0x8d, 0x24, 0xba, 0x9f] 0000000490 0xc68b Unknown = photo_62.nef 0000000502 0xc6f3 Unknown = com.adobe 0000000514 0xc6f4 Unknown = com.adobe @@ -55,13 +55,13 @@ Little-endian (Intel, II) 0000000586 0xc715 Unknown = [6876/10000 (0.6876), 3081/10000 (0.3081), -314/10000 (-0.0314), 2676/10000 (0.2676), 10343/10000 (1.0343), -3019/10000 (-0.3019), 151/10000 (0.0151), -1801/10000 (-0.1801), 9901/10000 (0.9901)] 0000000598 0xc716 Unknown = Adobe DNG Converter 0000000610 0xc717 Unknown = 15.4 -0000000622 0xc719 Unknown = [16 bytes] +0000000622 0xc719 Unknown = [0x8e, 0x8b, 0x9c, 0x27, 0x16, 0xe5, 0xc9, 0xe9, 0x0b, 0x68, 0xab, 0x8a, 0x0b, 0x1a, 0xd3, 0x87] 0000000634 0xc71a Unknown = 2 0000000646 0xc71b Unknown = 2023-07-26T06:11:34+02:00 0000000658 0xc725 Unknown = [36, 8, 16] 0000000670 0xc726 Unknown = [13824 floats] 0000000682 0xc761 Unknown = [5.8872358281834134E-5, 2.4396739365771742E-8, 5.051956969558251E-5, 1.7905222916852902E-8, 5.8139925230792704E-5, 2.000309103754009E-8] -0000000694 0xc7a7 Unknown = [16 bytes] +0000000694 0xc7a7 Unknown = [0x98, 0xc9, 0x64, 0x82, 0xfe, 0x76, 0xd6, 0xa5, 0xf8, 0xb5, 0xbe, 0x6f, 0xe9, 0xb8, 0x05, 0x66] ---- Directory ExifIFD @ 186902 ---- 0000186904 0x829a ExposureTime = 1/160 (0.00625) @@ -150,7 +150,7 @@ Little-endian (Intel, II) 0000196434 0x0214 ReferenceBlackWhite = [0/1 (0.0), 255/1 (255.0), 128/1 (128.0), 255/1 (255.0), 128/1 (128.0), 255/1 (255.0)] 0000196446 0xc716 Unknown = Adobe DNG Converter 0000196458 0xc717 Unknown = 15.4 -0000196470 0xc719 Unknown = [16 bytes] +0000196470 0xc719 Unknown = [0x8e, 0x8b, 0x9c, 0x27, 0x16, 0xe5, 0xc9, 0xe9, 0x0b, 0x68, 0xab, 0x8a, 0x0b, 0x1a, 0xd3, 0x87] 0000196482 0xc71a Unknown = 2 0000196494 0xc71b Unknown = 2023-07-26T06:11:34+02:00 diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_69.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_69.txt index b4f9039e..642dd66e 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_69.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_69.txt @@ -42,7 +42,7 @@ Little-endian (Intel, II) 0000000430 0xc634 Unknown = [70318 bytes] 0000000442 0xc65a Unknown = 17 0000000454 0xc65b Unknown = 21 -0000000466 0xc65d Unknown = [16 bytes] +0000000466 0xc65d Unknown = [0xbf, 0x85, 0x46, 0xc3, 0x91, 0xe2, 0xc2, 0x40, 0x86, 0xca, 0xfb, 0x29, 0x0a, 0x90, 0xf5, 0x7c] 0000000478 0xc68b Unknown = photo_63.arw 0000000490 0xc6f3 Unknown = com.adobe 0000000502 0xc6f4 Unknown = com.adobe @@ -53,13 +53,13 @@ Little-endian (Intel, II) 0000000562 0xc715 Unknown = [8201/10000 (0.8201), 2035/10000 (0.2035), -592/10000 (-0.0592), 3484/10000 (0.3484), 9301/10000 (0.9301), -2785/10000 (-0.2785), 46/10000 (0.0046), -1066/10000 (-0.1066), 9270/10000 (0.927)] 0000000574 0xc716 Unknown = Adobe DNG Converter 0000000586 0xc717 Unknown = 15.4 -0000000598 0xc719 Unknown = [16 bytes] +0000000598 0xc719 Unknown = [0x16, 0x28, 0x6d, 0x0d, 0x89, 0xf0, 0x96, 0xb8, 0x2e, 0xf1, 0x61, 0x8b, 0x9f, 0xf4, 0x9f, 0x06] 0000000610 0xc71a Unknown = 2 0000000622 0xc71b Unknown = 2023-07-26T06:11:34+02:00 0000000634 0xc725 Unknown = [36, 8, 16] 0000000646 0xc726 Unknown = [13824 floats] 0000000658 0xc761 Unknown = [4.711375600823987E-5, 2.1540751533546545E-7] -0000000670 0xc7a7 Unknown = [16 bytes] +0000000670 0xc7a7 Unknown = [0xc2, 0xd1, 0xe6, 0x3f, 0x06, 0x71, 0x29, 0xb0, 0x1d, 0xf2, 0x81, 0x90, 0x3e, 0x7a, 0x44, 0x40] ---- Directory ExifIFD @ 133624 ---- 0000133626 0x829a ExposureTime = 1/60 (0.016667) @@ -143,7 +143,7 @@ Little-endian (Intel, II) 0000136470 0x0214 ReferenceBlackWhite = [0/1 (0.0), 255/1 (255.0), 128/1 (128.0), 255/1 (255.0), 128/1 (128.0), 255/1 (255.0)] 0000136482 0xc716 Unknown = Adobe DNG Converter 0000136494 0xc717 Unknown = 15.4 -0000136506 0xc719 Unknown = [16 bytes] +0000136506 0xc719 Unknown = [0x16, 0x28, 0x6d, 0x0d, 0x89, 0xf0, 0x96, 0xb8, 0x2e, 0xf1, 0x61, 0x8b, 0x9f, 0xf4, 0x9f, 0x06] 0000136518 0xc71a Unknown = 2 0000136530 0xc71b Unknown = 2023-07-26T06:11:34+02:00 @@ -158,8 +158,8 @@ Little-endian (Intel, II) 0000136778 0x011c PlanarConfiguration = 1 0000136790 0x0142 TileWidth = 512 0000136802 0x0143 TileLength = 464 -0000136814 0x0144 TileOffsets = [12 ints] -0000136826 0x0145 TileByteCounts = [12 ints] +0000136814 0x0144 TileOffsets = [380988, 423176, 457484, 490868, 527332, 576650, 624598, 668030, 712788, 754568, 794462, 831266] +0000136826 0x0145 TileByteCounts = [42187, 34308, 33384, 36464, 49318, 47947, 43432, 44757, 41779, 39893, 36804, 41141] 0000136838 0xc716 Unknown = Adobe DNG Converter 0000136850 0xc717 Unknown = 15.4 0000136862 0xc741 Unknown = [256 bytes] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_70.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_70.txt index e930b12f..a44e0910 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_70.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_70.txt @@ -39,7 +39,7 @@ Little-endian (Intel, II) 0000000394 0xc634 Unknown = [616970 bytes] 0000000406 0xc65a Unknown = 17 0000000418 0xc65b Unknown = 21 -0000000430 0xc65d Unknown = [16 bytes] +0000000430 0xc65d Unknown = [0xe3, 0xdc, 0x5c, 0x51, 0x47, 0x2f, 0xca, 0x3b, 0x6b, 0x6e, 0xd4, 0x01, 0x27, 0x70, 0xbc, 0xd2] 0000000442 0xc68b Unknown = photo_64.rw2 0000000454 0xc6f4 Unknown = com.adobe 0000000466 0xc6f8 Unknown = Adobe Standard @@ -52,13 +52,13 @@ Little-endian (Intel, II) 0000000550 0xc715 Unknown = [5482/10000 (0.5482), 4214/10000 (0.4214), -53/10000 (-0.0053), 1410/10000 (0.141), 10704/10000 (1.0704), -2114/10000 (-0.2114), 164/10000 (0.0164), -2579/10000 (-0.2579), 10667/10000 (1.0667)] 0000000562 0xc716 Unknown = Adobe DNG Converter 0000000574 0xc717 Unknown = 15.4 -0000000586 0xc719 Unknown = [16 bytes] +0000000586 0xc719 Unknown = [0xcd, 0x4f, 0x12, 0x43, 0xc9, 0x6b, 0xae, 0x12, 0x0d, 0xe6, 0x4a, 0x68, 0x8f, 0x03, 0xbb, 0xf1] 0000000598 0xc71a Unknown = 2 0000000610 0xc71b Unknown = 2023-07-26T06:11:34+02:00 0000000622 0xc725 Unknown = [36, 8, 16] 0000000634 0xc726 Unknown = [13824 floats] 0000000646 0xc761 Unknown = [2.0641153582055387E-4, 3.0483049720786857E-7] -0000000658 0xc7a7 Unknown = [16 bytes] +0000000658 0xc7a7 Unknown = [0x90, 0xe0, 0x8e, 0xc5, 0x0e, 0xa2, 0x2e, 0x0b, 0x2b, 0xc9, 0x6f, 0xb6, 0x30, 0xe2, 0xce, 0xb2] ---- Directory ExifIFD @ 744630 ---- 0000744632 0x829a ExposureTime = 1/60 (0.016667) @@ -143,7 +143,7 @@ Little-endian (Intel, II) 0000747318 0x0214 ReferenceBlackWhite = [0/1 (0.0), 255/1 (255.0), 128/1 (128.0), 255/1 (255.0), 128/1 (128.0), 255/1 (255.0)] 0000747330 0xc716 Unknown = Adobe DNG Converter 0000747342 0xc717 Unknown = 15.4 -0000747354 0xc719 Unknown = [16 bytes] +0000747354 0xc719 Unknown = [0xcd, 0x4f, 0x12, 0x43, 0xc9, 0x6b, 0xae, 0x12, 0x0d, 0xe6, 0x4a, 0x68, 0x8f, 0x03, 0xbb, 0xf1] 0000747366 0xc71a Unknown = 2 0000747378 0xc71b Unknown = 2023-07-26T06:11:34+02:00 @@ -158,8 +158,8 @@ Little-endian (Intel, II) 0000747626 0x011c PlanarConfiguration = 1 0000747638 0x0142 TileWidth = 512 0000747650 0x0143 TileLength = 512 -0000747662 0x0144 TileOffsets = [12 ints] -0000747674 0x0145 TileByteCounts = [12 ints] +0000747662 0x0144 TileOffsets = [1063626, 1152024, 1239494, 1319338, 1372880, 1464272, 1552292, 1632972, 1685810, 1770122, 1866434, 1958686] +0000747674 0x0145 TileByteCounts = [88397, 87470, 79844, 53542, 91391, 88020, 80679, 52838, 84311, 96312, 92252, 55016] 0000747686 0xc716 Unknown = Adobe DNG Converter 0000747698 0xc717 Unknown = 15.4 0000747710 0xc741 Unknown = [256 bytes] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_71.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_71.txt index 678015c2..f5bc7321 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_71.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_71.txt @@ -42,7 +42,7 @@ Little-endian (Intel, II) 0000000430 0xc634 Unknown = [1474992 bytes] 0000000442 0xc65a Unknown = 17 0000000454 0xc65b Unknown = 21 -0000000466 0xc65d Unknown = [16 bytes] +0000000466 0xc65d Unknown = [0x51, 0x8a, 0xa6, 0x6f, 0x43, 0xa2, 0xd6, 0xc6, 0x21, 0x4d, 0x50, 0xfb, 0x38, 0x19, 0x04, 0x87] 0000000478 0xc68b Unknown = photo_65.orf 0000000490 0xc6f3 Unknown = com.adobe 0000000502 0xc6f4 Unknown = com.adobe @@ -53,13 +53,13 @@ Little-endian (Intel, II) 0000000562 0xc715 Unknown = [5158/10000 (0.5158), 5215/10000 (0.5215), -730/10000 (-0.073), 777/10000 (0.0777), 13038/10000 (1.3038), -3815/10000 (-0.3815), -123/10000 (-0.0123), -2487/10000 (-0.2487), 10861/10000 (1.0861)] 0000000574 0xc716 Unknown = Adobe DNG Converter 0000000586 0xc717 Unknown = 15.4 -0000000598 0xc719 Unknown = [16 bytes] +0000000598 0xc719 Unknown = [0x2b, 0xa6, 0xd9, 0x73, 0x2c, 0xc7, 0x26, 0x32, 0xf4, 0xef, 0xec, 0x43, 0xdb, 0xa0, 0x98, 0x45] 0000000610 0xc71a Unknown = 2 0000000622 0xc71b Unknown = 2023-07-26T06:11:34+02:00 0000000634 0xc725 Unknown = [36, 8, 16] 0000000646 0xc726 Unknown = [13824 floats] 0000000658 0xc761 Unknown = [1.2908674753948272E-4, 5.275777425016946E-7] -0000000670 0xc7a7 Unknown = [16 bytes] +0000000670 0xc7a7 Unknown = [0x16, 0xba, 0xe3, 0xfa, 0xa7, 0x54, 0xd9, 0x53, 0xf8, 0x4b, 0x66, 0x91, 0x06, 0x73, 0x3c, 0x24] ---- Directory ExifIFD @ 1538236 ---- 0001538238 0x829a ExposureTime = 1/640 (0.001563) @@ -141,7 +141,7 @@ Little-endian (Intel, II) 0001540780 0x0214 ReferenceBlackWhite = [0/1 (0.0), 255/1 (255.0), 128/1 (128.0), 255/1 (255.0), 128/1 (128.0), 255/1 (255.0)] 0001540792 0xc716 Unknown = Adobe DNG Converter 0001540804 0xc717 Unknown = 15.4 -0001540816 0xc719 Unknown = [16 bytes] +0001540816 0xc719 Unknown = [0x2b, 0xa6, 0xd9, 0x73, 0x2c, 0xc7, 0x26, 0x32, 0xf4, 0xef, 0xec, 0x43, 0xdb, 0xa0, 0x98, 0x45] 0001540828 0xc71a Unknown = 2 0001540840 0xc71b Unknown = 2023-07-26T06:11:34+02:00 @@ -156,8 +156,8 @@ Little-endian (Intel, II) 0001541088 0x011c PlanarConfiguration = 1 0001541100 0x0142 TileWidth = 464 0001541112 0x0143 TileLength = 464 -0001541124 0x0144 TileOffsets = [12 ints] -0001541136 0x0145 TileByteCounts = [12 ints] +0001541124 0x0144 TileOffsets = [1797010, 1835076, 1874808, 1915222, 1954244, 1991106, 2041852, 2084912, 2112100, 2161668, 2218506, 2273914] +0001541136 0x0145 TileByteCounts = [38066, 39731, 40413, 39021, 36861, 50745, 43059, 27187, 49568, 56838, 55408, 53367] 0001541148 0xc716 Unknown = Adobe DNG Converter 0001541160 0xc717 Unknown = 15.4 0001541172 0xc741 Unknown = [256 bytes] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_74.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_74.txt index 102a9028..17d5ce90 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_74.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_74.txt @@ -93,7 +93,7 @@ Little-endian (Intel, II) 0000000970 0x0098 Unknown = [0, 0, 0, 0] 0000000982 0x0099 Unknown = [116 ints] 0000000994 0x009a Unknown = [0, 5472, 3648, 0, 0] -0000001006 0x00a0 Unknown = [14 shorts] +0000001006 0x00a0 Unknown = [28, 0, 3, 0, 0, 0, 0, 0, -1, 5200, 135, 0, 0, 0] 0000001018 0x00aa Unknown = [12, 595, 1024, 1024, 515, 0] 0000001030 0x00b4 Unknown = 1 0000001042 0x00d0 Unknown = 0 @@ -104,7 +104,7 @@ Little-endian (Intel, II) 0000001102 0x4010 Unknown = 0000001114 0x4011 Unknown = [252 bytes] 0000001126 0x4012 Unknown = -0000001138 0x4013 Unknown = [11 ints] +0000001138 0x4013 Unknown = [44, 0, 0, 10, -1, 0, 10, 0, 10, 0, 10] 0000001150 0x4015 Unknown = [456 bytes] 0000001162 0x4016 Unknown = [28, 0, 1, 0, 1, 0, 0] 0000001174 0x4018 Unknown = [28, 0, 0, 0, 0, 0, 1] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_75.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_75.txt index 64788956..24cf6ae4 100644 --- a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_75.txt +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_75.txt @@ -93,7 +93,7 @@ Little-endian (Intel, II) 0000000970 0x0098 Unknown = [0, 0, 0, 0] 0000000982 0x0099 Unknown = [116 ints] 0000000994 0x009a Unknown = [0, 5472, 3648, 0, 0] -0000001006 0x00a0 Unknown = [14 shorts] +0000001006 0x00a0 Unknown = [28, 0, 3, 0, 0, 0, 0, 0, -1, 5200, 135, 0, 0, 0] 0000001018 0x00aa Unknown = [12, 595, 1024, 1024, 515, 0] 0000001030 0x00b4 Unknown = 1 0000001042 0x00d0 Unknown = 0 @@ -104,7 +104,7 @@ Little-endian (Intel, II) 0000001102 0x4010 Unknown = 0000001114 0x4011 Unknown = [252 bytes] 0000001126 0x4012 Unknown = -0000001138 0x4013 Unknown = [11 ints] +0000001138 0x4013 Unknown = [44, 0, 0, 10, -1, 0, 10, 0, 10, 0, 10] 0000001150 0x4015 Unknown = [456 bytes] 0000001162 0x4016 Unknown = [28, 0, 1, 0, 1, 0, 0] 0000001174 0x4018 Unknown = [28, 0, 0, 0, 0, 0, 1] diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_81.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_81.txt new file mode 100644 index 00000000..2d3b22c3 --- /dev/null +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_81.txt @@ -0,0 +1,38 @@ +File format : TIFF +Resolution : 1 x 1 +---- TIFF ---- +Version 42 +Little-endian (Intel, II) +---- Directory IFD0 @ 8 ---- +0000000010 0x0100 ImageWidth = 1 +0000000022 0x0101 ImageLength = 1 +0000000034 0x0102 BitsPerSample = [8, 8, 8] +0000000046 0x0103 Compression = 8 +0000000058 0x0106 PhotometricInterpretation = 2 +0000000070 0x010e ImageDescription = GeoTiff +0000000082 0x0111 PreviewImageStart = 444 +0000000094 0x0112 Orientation = 1 +0000000106 0x0115 SamplesPerPixel = 3 +0000000118 0x0116 RowsPerStrip = 128 +0000000130 0x0117 PreviewImageLength = 14 +0000000142 0x011a XResolution = 1/1 (1.0) +0000000154 0x011b YResolution = 1/1 (1.0) +0000000166 0x011c PlanarConfiguration = 1 +0000000178 0x011d PageName = 3.tiff +0000000190 0x0128 ResolutionUnit = 2 +0000000202 0x013d Predictor = 2 +0000000214 0x0153 SampleFormat = [1, 1, 1] +0000000226 0x830e ModelPixelScaleTag = [2.303616678184751E-4, -1.521606816798535E-4, 0.0] +0000000238 0x8482 ModelTiepointTag = [0.0, 0.0, 0.0, 8.915687629578438, 48.92432542097789, 0.0] +0000000250 0x8769 ExifOffset = 426 +0000000262 0x87af GeoKeyDirectoryTag = [1, 0, 2, 3, 1024, 0, 1, 2, 2048, 0, 1, 4326, 1025, 0, 1, 2] + +---- Directory ExifIFD @ 426 ---- +0000000428 0xa001 ColorSpace = 1 + +---- GeoTiff ---- +Version : 1.0.2 +Model type : Geographic +Raster type : Pixel Is Point +Geographic type : WGS 84 + diff --git a/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_82.txt b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_82.txt new file mode 100644 index 00000000..d3c47fed --- /dev/null +++ b/src/commonTest/resources/com/ashampoo/kim/testdata/txt/photo_82.txt @@ -0,0 +1,37 @@ +File format : TIFF +Resolution : 1 x 1 +---- TIFF ---- +Version 42 +Little-endian (Intel, II) +---- Directory IFD0 @ 8 ---- +0000000010 0x0100 ImageWidth = 1 +0000000022 0x0101 ImageLength = 1 +0000000034 0x0102 BitsPerSample = [8, 8, 8] +0000000046 0x0103 Compression = 8 +0000000058 0x0106 PhotometricInterpretation = 2 +0000000070 0x010e ImageDescription = GeoTiff +0000000082 0x0111 PreviewImageStart = 488 +0000000094 0x0112 Orientation = 1 +0000000106 0x0115 SamplesPerPixel = 3 +0000000118 0x0116 RowsPerStrip = 128 +0000000130 0x0117 PreviewImageLength = 14 +0000000142 0x011a XResolution = 1/1 (1.0) +0000000154 0x011b YResolution = 1/1 (1.0) +0000000166 0x011c PlanarConfiguration = 1 +0000000178 0x011d PageName = 5.tiff +0000000190 0x0128 ResolutionUnit = 2 +0000000202 0x013d Predictor = 2 +0000000214 0x0153 SampleFormat = [1, 1, 1] +0000000226 0x85d8 ModelTransformationTag = [2.2084813898977268E-5, 6.257284036419086E-6, 0.0, 9.17998827675385, 4.182818845875441E-6, -1.4578887684121357E-5, 0.0, 48.69211299143424, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0] +0000000238 0x8769 ExifOffset = 470 +0000000250 0x87af GeoKeyDirectoryTag = [1, 0, 2, 3, 1024, 0, 1, 2, 2048, 0, 1, 4326, 1025, 0, 1, 1] + +---- Directory ExifIFD @ 470 ---- +0000000472 0xa001 ColorSpace = 1 + +---- GeoTiff ---- +Version : 1.0.2 +Model type : Geographic +Raster type : Pixel Is Area +Geographic type : WGS 84 + diff --git a/src/commonTest/resources/com/ashampoo/kim/updates_jpg/original.html b/src/commonTest/resources/com/ashampoo/kim/updates_jpg/original.html deleted file mode 100644 index d2e89f8d..00000000 --- a/src/commonTest/resources/com/ashampoo/kim/updates_jpg/original.html +++ /dev/null @@ -1,2412 +0,0 @@ - - - - - HTML Dump (original.jpg) - - - - - - - - - - - - - -
-000c
- 0000
- 000a
- 0016
- 0022
- 002e
- 003a
- 0046
- 0052
- 005e
- 006a
- 0076
- 0082
- 008e
- 009a
- 00a6
- 00b0
- 00c0
- 00d0
- 00e0
- 00f0
- 0100
- 0104
- 0110
- 011c
- 0128
- 0134
- 0140
- 014c
- 0158
- 0164
- 0170
- 017c
- 0188
- 0194
- 01a0
- 01ac
- 01b8
- 01c4
- 01d0
- 01dc
- 01e8
- 01f4
- 0200
- 020c
- 0218
- 0224
- 0230
- 023c
- 0248
- 0254
- 0260
- 026c
- 0278
- 0284
- 0290
- 029c
- 02a8
- 02b4
- 02c0
- 02cc
- 02d8
- 02e4
- 02f0
- 02fc
- 0300
- 0310
- 0320
- 0330
- 0340
- 0350
- 0360
- 0362
- 036e
- 037a
- 0386
- 0392
- 039e
- 03aa
- 03b6
- 03c2
- 03ce
- 03da
- 03e6
- 03f2
- 03fe
- 040a
- 0416
- 0422
- 042e
- 043a
- 0446
- 0452
- 045e
- 046a
- 0476
- 0482
- 048e
- 049a
- 04a6
- 04b2
- 04be
- 04ca
- 04d6
- 04e2
- 04ee
- 04fa
- 0506
- 0512
- 051e
- 052a
- 0536
- 0542
- 054e
- 055a
- 0566
- 0572
- 057e
- 058a
- 0590
- 05a0
- 05b0
- 05c0
- 05d0
- 05e0
- 05f0
- 0600
- 0610
- 0620
- 0630
- 0640
- 0650
- 0660
- 0670
- 0680
- 0690
- 06a0
- 06b0
- 06c0
- 06d0
- 06e0
- 06f0
- 0700
- 0710
- 0720
- 0730
- 0740
- 0750
- 0760
- 0770
- 0780
- 0790
- 07a0
- 07b0
- 07c0
- 07d0
- 07e0
- 07f0
- 0800
- 0810
- 0820
- 0830
- 0840
- 0850
-  ...
- 3e00
- 3e10
- 3e20
- 3e30
- 3e40
- 3e50
- 3e60
- 3e70
- 3e80
- 3e90
- 3ea0
- 3eb0
- 3ec0
- 3ed0
- 3ee0
- 3ef0
- 3f00
- 3f10
- 3f20
- 3f30
- 3f40
- 3f50
- 3f60
- 3f70
- 3f80
- 3f90
- 3fa0
- 3fb0
- 3fc0
- 3fd0
- 3fe0
- 3ff0
- 4000
- 4010
- 4020
- 4030
- 4040
- 4050
- 4060
- 4070
- 4080
- 4090
- 40a0
- 40b0
- 40c0
- 40d0
- 40e0
- 40f0
- 4100
- 4110
- 4120
- 4130
- 4140
- 4150
- 4160
- 4170
- 4180
- 4190
- 41a0
- 41b0
- 41c0
- 41d0
- 41e0
- 41f0
- 4200
- 4210
- 4220
- 4230
- 4240
- 4250
- 4260
- 4270
- 4280
- 4290
- 42a0
- 42b0
- 42c0
- 42d0
- 42e0
- 42f0
- 4300
- 4310
- 4320
- 4330
- 4340
- 4350
- 4360
- 4370
- 4380
- 4390
- 43a0
- 43b0
- 43c0
- 43d0
- 43e0
- 43f0
- 4400
- 4410
- 4420
- 4430
- 4440
- 4450
- 4460
- 4470
- 4480
- 4490
- 44a0
- 44b0
- 44c0
- 44d0
- 44e0
- 44f0
- 4500
- 4510
- 4520
- 4530
- 4540
- 4550
- 4560
- 4570
- 4580
- 4590
- 45a0
- 45b0
- 45c0
- 45d0
- 45e0
- 45f0
- 4600
- 4610
- 4620
- 4630
- 4640
- 4650
- 4660
- 4670
- 4680
- 4690
- 46a0
- 46b0
- 46c0
- 46d0
- 46e0
- 46f0
- 4700
- 4710
- 4720
- 4730
- 4740
- 4750
- 4760
- 4770
- 4780
- 4790
- 47a0
- 47b0
- 47c0
- 47d0
- 47e0
- 47f0
- 4800
- 4810
- 4820
- 4830
- 4840
- 4850
- 4860
- 4870
- 4880
- 4890
- 48a0
- 48b0
- 48c0
- 48d0
- 48e0
- 48f0
- 4900
- 4910
- 4920
- 4930
- 4940
- 4950
- 4960
- 4970
- 4980
- 4988
- 4994
- 49a0
- 49ac
- 49b8
- 49be
- 49ca
- 49d0
- 49dc
- 49e8
- 49f4
- 4a00
- 4a0c
- 4a18
- 4a20
- 4a30
- 4a40
- 4a50
- 4a60
- 4a70
- 4a80
- 4a90
-  ...
- 5640
- 5650
- 5660
- 5670
- 5680
- 5690
- 56a0
- 56b0
- 56c0
- 56d0
- 56e0
- 56f0
- 5700
- 5710
- 5720
- 5730
- 5740
- 5750
- 5760
- 5770
- 5780
-  ...
- 61a0
- 61b0
- 61c0
- 61d0
- 61e0
- 61f0
- 6200
- 6210
- 6220
- 6230
- 6240
- 6250
- 6260
- 6270
- 6280
- 6290
- 62a0
- 62b0
- 62c0
- 62d0
- 62e0
- 62f0
- 6300
- 6310
- 6320
- 6330
- 6340
- 6350
- 6360
- 6370
- 6380
- 6390
- 63a0
- 63b0
- 63c0
- 63d0
- 63e0
-  ...
-46b70
-46b80
-46b90
-46ba0
-46bb0
-46bc0
-46bd0
-46be0
-46bf0
-
-
            ff d8 ff e1  56 be 45 78 69 66 00 00
-49 49 2a 00 08 00 00 00  0d 00
-0e 01 02 00 20 00 00 00  aa 00 00 00
-0f 01 02 00 06 00 00 00  ca 00 00 00
-10 01 02 00 0d 00 00 00  d0 00 00 00
-12 01 03 00 01 00 00 00  01 00 00 00
-1a 01 05 00 01 00 00 00  de 00 00 00
-1b 01 05 00 01 00 00 00  e6 00 00 00
-28 01 03 00 01 00 00 00  02 00 00 00
-32 01 02 00 14 00 00 00  ee 00 00 00
-3b 01 02 00 01 00 00 00  00 00 00 00
-13 02 03 00 01 00 00 00  02 00 00 00
-98 82 02 00 01 00 00 00  00 00 00 00
-69 87 04 00 01 00 00 00  02 01 00 00
-25 88 04 00 01 00 00 00  bc 49 00 00
-                  ce 49  00 00 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  20 00 43 61 6e 6f 6e 00
-43 61 6e 6f 6e 20 45 4f  53 20 4d 33 00 00 b4 00
-00 00 01 00 00 00 b4 00  00 00 01 00 00 00 32 30
-31 37 3a 31 31 3a 31 32  20 32 32 3a 32 36 3a 31
-36 00 2a 00
-9a 82 05 00 01 00 00 00  00 03 00 00
-9d 82 05 00 01 00 00 00  08 03 00 00
-22 88 03 00 01 00 00 00  04 00 00 00
-27 88 03 00 01 00 00 00  80 0c 00 00
-30 88 03 00 01 00 00 00  02 00 00 00
-32 88 04 00 01 00 00 00  80 0c 00 00
-00 90 07 00 04 00 00 00  30 32 33 30
-03 90 02 00 14 00 00 00  10 03 00 00
-04 90 02 00 14 00 00 00  24 03 00 00
-01 91 07 00 04 00 00 00  01 02 03 00
-02 91 05 00 01 00 00 00  38 03 00 00
-01 92 0a 00 01 00 00 00  40 03 00 00
-02 92 05 00 01 00 00 00  48 03 00 00
-04 92 0a 00 01 00 00 00  50 03 00 00
-07 92 03 00 01 00 00 00  05 00 00 00
-09 92 03 00 01 00 00 00  10 00 00 00
-0a 92 05 00 01 00 00 00  58 03 00 00
-7c 92 07 00 ae 44 00 00  60 03 00 00
-86 92 07 00 08 01 00 00  0e 48 00 00
-90 92 02 00 03 00 00 00  20 20 00 00
-91 92 02 00 03 00 00 00  37 36 00 00
-92 92 02 00 03 00 00 00  37 36 00 00
-00 a0 07 00 04 00 00 00  30 31 30 30
-01 a0 03 00 01 00 00 00  01 00 00 00
-02 a0 03 00 01 00 00 00  00 09 00 00
-03 a0 03 00 01 00 00 00  00 06 00 00
-05 a0 04 00 01 00 00 00  86 49 00 00
-0e a2 05 00 01 00 00 00  16 49 00 00
-0f a2 05 00 01 00 00 00  1e 49 00 00
-10 a2 03 00 01 00 00 00  02 00 00 00
-17 a2 03 00 01 00 00 00  02 00 00 00
-00 a3 07 00 01 00 00 00  03 00 00 00
-01 a4 03 00 01 00 00 00  00 00 00 00
-02 a4 03 00 01 00 00 00  00 00 00 00
-03 a4 03 00 01 00 00 00  01 00 00 00
-04 a4 05 00 01 00 00 00  26 49 00 00
-06 a4 03 00 01 00 00 00  00 00 00 00
-30 a4 02 00 01 00 00 00  00 00 00 00
-31 a4 02 00 0d 00 00 00  2e 49 00 00
-32 a4 05 00 04 00 00 00  3c 49 00 00
-34 a4 02 00 1d 00 00 00  5c 49 00 00
-35 a4 02 00 0b 00 00 00  7a 49 00 00
-                                     00 00 00 00
-01 00 00 00 a0 0f 00 00  38 00 00 00 0a 00 00 00
-32 30 31 37 3a 31 31 3a  31 32 20 32 31 3a 34 31
-3a 34 38 00 32 30 31 37  3a 31 31 3a 31 32 20 32
-31 3a 34 31 3a 34 38 00  03 00 00 00 01 00 00 00
-7f 01 00 00 20 00 00 00  9f 00 00 00 20 00 00 00
-00 00 00 00 03 00 00 00  37 00 00 00 01 00 00 00
-2e 00
-01 00 03 00 32 00 00 00  8e 05 00 00
-03 00 03 00 04 00 00 00  f2 05 00 00
-04 00 03 00 22 00 00 00  fa 05 00 00
-06 00 02 00 10 00 00 00  3e 06 00 00
-07 00 02 00 16 00 00 00  4e 06 00 00
-08 00 04 00 01 00 00 00  78 e1 12 00
-0d 00 04 00 64 0e 00 00  64 06 00 00
-10 00 04 00 01 00 00 00  00 00 74 03
-13 00 03 00 04 00 00 00  f4 3f 00 00
-18 00 01 00 00 01 00 00  fc 3f 00 00
-19 00 03 00 01 00 00 00  01 00 00 00
-1c 00 03 00 01 00 00 00  00 00 00 00
-1e 00 04 00 01 00 00 00  00 01 01 01
-22 00 03 00 d0 00 00 00  fc 40 00 00
-23 00 04 00 02 00 00 00  9c 42 00 00
-27 00 03 00 15 00 00 00  a4 42 00 00
-28 00 01 00 10 00 00 00  ce 42 00 00
-2d 00 04 00 01 00 00 00  00 00 00 00
-2e 00 03 00 1b 00 00 00  de 42 00 00
-2f 00 03 00 11 00 00 00  14 43 00 00
-31 00 03 00 06 00 00 00  36 43 00 00
-33 00 04 00 04 00 00 00  42 43 00 00
-35 00 04 00 04 00 00 00  52 43 00 00
-37 00 04 00 02 00 00 00  62 43 00 00
-38 00 07 00 08 00 00 00  6a 43 00 00
-3c 00 03 00 da 00 00 00  72 43 00 00
-3d 00 04 00 08 00 00 00  26 45 00 00
-3f 00 04 00 01 00 00 00  01 00 00 00
-93 00 03 00 21 00 00 00  46 45 00 00
-96 00 02 00 0a 00 00 00  88 45 00 00
-99 00 04 00 22 00 00 00  92 45 00 00
-9a 00 04 00 05 00 00 00  1a 46 00 00
-a0 00 03 00 0e 00 00 00  2e 46 00 00
-aa 00 03 00 06 00 00 00  4a 46 00 00
-d0 00 04 00 01 00 00 00  00 00 00 00
-08 40 03 00 03 00 00 00  56 46 00 00
-09 40 03 00 03 00 00 00  5c 46 00 00
-10 40 02 00 20 00 00 00  62 46 00 00
-12 40 02 00 20 00 00 00  82 46 00 00
-16 40 04 00 08 00 00 00  a2 46 00 00
-18 40 04 00 09 00 00 00  c2 46 00 00
-20 40 04 00 07 00 00 00  e6 46 00 00
-23 40 04 00 04 00 00 00  02 47 00 00
-24 40 04 00 35 00 00 00  12 47 00 00
-2b 40 04 00 06 00 00 00  e6 47 00 00
-2c 40 04 00 02 00 00 00  fe 47 00 00
-                               00 00 00 00 64 00
-02 00 00 00 03 00 00 00  00 00 00 00 00 01 ff ff
-01 00 0f 00 01 00 00 00  00 00 00 00 ff 7f 0f 00
-03 00 01 00 05 20 02 00  ff 7f 2f 10 37 00 12 00
-01 00 9f 00 4b 01 00 00  00 00 00 00 00 00 01 00
-ff ff 01 01 9f 00 70 17  70 17 00 00 00 00 ff ff
-00 00 00 00 ff 7f 01 00  00 00 ff ff 28 00 ff ff
-ff ff 00 00 00 00 00 00  00 00 44 00 81 00 c0 00
-c8 00 9f 00 7f 01 00 00  06 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 01 00
-00 00 00 00 9f 00 80 01  00 00 00 00 ff ff fa 00
-00 00 ff ff 00 00 00 00  00 00 00 00 00 00 49 4d
-47 3a 45 4f 53 20 4d 33  20 4a 50 45 47 00 46 69
-72 6d 77 61 72 65 20 56  65 72 73 69 6f 6e 20 31
-2e 30 31 00 90 39 00 00  14 00 00 00 0f 00 00 00
-02 00 00 00 04 00 00 00  38 01 00 00 a4 00 00 00
-01 00 00 00 03 00 00 00  04 00 00 00 dc 01 00 00
-24 00 00 00 01 00 00 00  04 00 00 00 04 00 00 00
-00 02 00 00 ec 00 00 00  01 00 00 00 05 00 00 00
-04 00 00 00 ec 02 00 00  c8 04 00 00 02 00 00 00
-06 00 00 00 04 00 00 00  b4 07 00 00 54 05 00 00
-01 00 00 00 07 00 00 00  04 00 00 00 08 0d 00 00
-20 00 00 00 01 00 00 00  08 00 00 00 04 00 00 00
-28 0d 00 00 3c 00 00 00  01 00 00 00 09 00 00 00
-04 00 00 00 64 0d 00 00  14 01 00 00 01 00 00 00
-0c 00 00 00 03 00 00 00  78 0e 00 00 2c 05 00 00
-01 00 00 00 0d 00 00 00  03 00 00 00 a4 13 00 00
-5a 00 00 00 02 00 00 00  0e 00 00 00 04 00 00 00
-00 14 00 00 28 00 00 00  01 00 00 00 0f 00 00 00
-07 00 00 00 28 14 00 00  08 24 00 00 01 00 00 00
-0a 00 00 00 04 00 00 00  30 38 00 00 94 00 00 00
-01 00 00 00 0b 00 00 00  04 00 00 00 c4 38 00 00
-a0 00 00 00 01 00 00 00  01 00 00 00 04 00 00 00
-64 39 00 00 2c 00 00 00  01 00 00 00 c5 03 00 00
-40 02 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-e0 01 00 00 80 04 00 00  85 01 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 e0 01 00 00
-6e 02 00 00 a0 ff ff ff  00 00 00 00 00 00 00 00
-2d 00 00 00 bf ff ff ff  00 00 00 00 f6 ff ff ff
-fd ff ff ff 00 00 00 00  00 00 00 00 03 00 00 00
-0a 00 00 00 5a 02 00 00  9b 02 00 00 5a 02 00 00
-00 f4 ff ff 00 f4 ff ff  00 f4 ff ff 00 f4 ff ff
-00 f4 ff ff 9b 02 00 00  5a 02 00 00 00 00 00 00
-00 00 00 00 01 00 00 00  02 00 00 00 0a 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-                [snip 858 lines]
-a0 7f 70 1c c0 57 a0 1d  e0 2b d0 1e 00 00 00 20
-00 00 00 20 00 57 71 16  20 2f a1 17 40 03 d1 18
-60 d7 00 1a 80 ab 30 1b  a0 7f 70 1c c7 4f e0 1d
-e5 23 00 1f 00 00 00 20  00 00 00 20 00 00 1f 00
-3f 00 5f 00 7f 00 9f 00  bf 00 df 00 ff 00 00 00
-1f 00 3f 00 5f 00 7f 00  9f 00 bf 00 df 00 ff 00
-01 00 23 00 00 00 10 00  20 00 40 00 60 00 80 00
-c0 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-e8 03 e8 03 e8 03 e8 03  e8 03 e8 03 e8 03 00 00
-88 04 00 00 3d bf 08 5a  86 bf 08 5a 00 00 00 00
-00 00 00 00 00 01 00 00  00 18 c7 5d 00 68 20 00
-00 80 d7 59 79 7f 08 00  00 9c c6 5d 00 7c 00 00
-00 80 d7 59 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 02 e0 59 95 58 03 00  00 80 d7 59 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 80 d7 59 00 00 10 04  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  1e 00 00 00 0e 00 00 00
-9b 88 e5 9c 00 00 9f 00  07 00 70 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 a0 01 00 00
-00 00 10 00 08 00 01 00  01 00 80 02 e0 01 00 00
-00 00 00 00 00 00 00 00  08 00 80 01 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 08 00 00 00
-00 00 00 00 0a 00 00 00  ff ff 00 00 ff ff 2a 00
-ff ff 00 00 00 00 ff ff  ff ff ff ff ff ff ff ff
-ff ff ff ff 00 00 ff ff  ff ff ff ff ff ff 6d 0c
-e7 33 af f8 d1 dc 5a eb  38 82 5e 81 04 2f 36 00
-ff 7f ff 7f ff ff ff ff  ff 7f ff 7f ff 7f 00 00
-ff ff 01 00 ff ff ff ff  ff ff ff ff ff 7f ff 7f
-ff 7f ff ff ff ff ff ff  ff ff ff ff 00 00 00 00
-00 00 00 00 22 00 02 00  ff ff ff ff ff ff ff ff
-ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff
-ff ff ff ff ff ff 0c 00  01 00 ff ff ff ff ff ff
-ff ff 25 18 f7 a6 be 4c  d1 dc 5a eb 38 82 5e 81
-04 2f 10 00 00 00 00 00  00 00 fe 7f 00 00 00 00
-00 00 08 00 00 00 00 00  00 00 08 00 00 00 70 29
-d5 7b b4 01 0d 00 31 00  01 00 00 09 00 06 70 17
-a0 0f 58 02 9c 00 50 32  00 00 2b 75 14 00 00 00
-50 32 00 00 00 00 50 6b  64 6b 69 f5 ce 00 c8 31
-4e 00 94 00 30 db 66 06  30 db 0a 00 02 00 30 db
-01 01 00 00 02 00 00 00  01 00 69 f5 61 00 ff ff
-a2 00 9c 00 50 32 00 00  2b 75 14 00 00 00 50 32
-00 00 c8 31 4e 00 53 00  30 db 0e 06 30 db 0a 00
-02 00 30 db 20 03 30 db  6c 06 30 db 0a 00 02 00
-30 db 01 01 00 00 02 00  00 00 01 00 69 f5 67 00
-ff ff ac 00 9c 00 50 32  00 00 2b 75 14 00 00 00
-50 32 00 00 00 00 50 6b  64 6b 69 f5 cc 00 c8 31
-4e 00 9c 00 30 db 72 06  30 db 0a 00 02 00 30 db
-01 01 00 00 ff ff e5 20  9c 00 50 32 00 00 2b 75
-14 00 00 00 50 32 00 00  c8 31 4e 00 53 00 30 db
-40 06 30 db 0a 00 02 00  30 db 01 01 00 00 02 00
-00 00 01 00 69 f5 73 00  ff ff e5 20 9c 00 50 32
-00 00 2b 75 14 00 00 00  50 32 00 00 00 00 50 6b
-64 6b 69 f5 ca 00 30 db  f8 01 a0 00 48 02 00 00
-30 db 0a 00 02 00 30 db  01 01 00 00 02 00 00 00
-01 00 69 f5 63 00 ff ff  00 00 ff ff e5 20 9c 00
-50 32 00 00 2b 75 14 00  00 00 50 32 00 00 00 00
-50 6b 64 6b 69 f5 c0 00  c8 31 4e 00 53 00 30 db
-5f 06 30 db 0a 00 02 00  30 db 01 01 00 00 02 00
-00 00 01 00 69 f5 67 00  50 32 c8 00 9c 32 98 32
-4b 74 2b 75 14 00 00 00  50 32 00 00 00 00 50 6b
-64 6b 69 f5 ce 00 c8 31  4e 00 01 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 fb ff 20 00  00 00 01 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 42 00  00 00 00 00 00 00 00 00
-00 00 03 00 01 00 ff ff  00 00 00 00 00 00 00 00
-00 00 ff ff ff ff be 00  ff ff 01 00 01 00 73 00
-62 00 00 00 01 00 00 00  00 00 ff 00 ff ff 00 00
-3f 00 0a 00 1f 00 00 00  53 41 30 31 35 31 32 32
-30 00 88 00 00 00 03 00  00 00 01 00 00 00 20 00
-00 00 02 00 00 00 03 01  00 00 01 00 00 00 00 00
-00 00 08 01 00 00 01 00  00 00 00 00 00 00 03 00
-00 00 14 00 00 00 01 00  00 00 0e 05 00 00 01 00
-00 00 01 00 00 00 04 00  00 00 40 00 00 00 03 00
-00 00 0c 07 00 00 06 00  00 00 00 00 00 00 00 00
-00 00 01 00 00 00 00 00  00 00 00 00 00 00 01 00
-00 00 11 07 00 00 01 00  00 00 00 00 00 00 14 08
-00 00 01 00 00 00 01 00  00 00 00 00 00 00 00 09
-00 00 00 06 00 00 00 00  00 00 00 00 00 00 1c 00
-00 00 00 00 ff ff ff ff  ff ff ff ff ff ff ff ff
-ff ff 84 00 00 00 09 00  ff ff 0c 00 88 01 21 02
-22 02 36 0a 00 00 87 00  87 00 87 00 ff 00 ff 00
-ff 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 20 00 00 00 00 00  00 00 01 00 00 00 00 00
-00 00 01 00 00 00 01 00  00 00 01 00 00 00 00 00
-00 00 24 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 01 00 00 00 00 00
-00 00 01 00 00 00 1c 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 10 00 00 00 01 00  00 00 e0 10 00 00 40 0b
-00 00 d4 00 00 00 07 00  00 00 01 00 00 00 14 00
-00 00 01 00 00 00 01 01  00 00 01 00 00 00 ff ff
-ff ff 02 00 00 00 14 00  00 00 01 00 00 00 01 02
-00 00 01 00 00 00 ff ff  ff ff 03 00 00 00 14 00
-00 00 01 00 00 00 01 03  00 00 01 00 00 00 ff ff
-ff ff 04 00 00 00 38 00  00 00 04 00 00 00 01 04
-00 00 01 00 00 00 ff ff  ff ff 02 04 00 00 01 00
-00 00 ff ff ff ff 03 04  00 00 01 00 00 00 ff ff
-ff ff 04 04 00 00 01 00  00 00 ff ff ff ff 05 00
-00 00 14 00 00 00 01 00  00 00 01 05 00 00 01 00
-00 00 ff ff ff ff 06 00  00 00 14 00 00 00 01 00
-00 00 01 06 00 00 01 00  00 00 ff ff ff ff 07 00
-00 00 14 00 00 00 01 00  00 00 01 07 00 00 01 00
-00 00 ff ff ff ff 18 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 08 00
-00 00 00 00 00 00 49 49  2a 00 60 03 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
-00 00 00 00 00 00 00 28  23 00 6f 03 00 00 00 70
-17 00 4a 02 00 00 70 17  00 00 70 17 00 00 30 37
-33 30 34 33 30 30 31 31  38 33 00 00 12 00 00 00
-01 00 00 00 37 00 00 00  01 00 00 00 00 00 00 00
-01 00 00 00 00 00 00 00  01 00 00 00 45 46 2d 4d
-31 38 2d 35 35 6d 6d 20  66 2f 33 2e 35 2d 35 2e
-36 20 49 53 20 53 54 4d  00 00 30 30 30 30 34 35
-35 30 37 31 00 00 04 00
-01 00 02 00 04 00 00 00  52 39 38 00
-02 00 07 00 04 00 00 00  30 31 30 30
-01 10 03 00 01 00 00 00  00 09 00 00
-02 10 03 00 01 00 00 00  00 06 00 00
-                         00 00 00 00 01 00
-00 00 01 00 04 00 00 00  02 03 00 00
-                               00 00 00 00 06 00
-03 01 03 00 01 00 00 00  06 00 00 00
-1a 01 05 00 01 00 00 00  1c 4a 00 00
-1b 01 05 00 01 00 00 00  24 4a 00 00
-28 01 03 00 01 00 00 00  02 00 00 00
-01 02 04 00 01 00 00 00  2c 4a 00 00
-02 02 04 00 01 00 00 00  89 0c 00 00
-                         00 00 00 00 b4 00 00 00
-01 00 00 00 b4 00 00 00  01 00 00 00 ff d8 ff db
-00 84 00 09 06 06 08 06  05 09 08 07 08 0a 09 09
-0b 0d 16 0f 0d 0c 0c 0d  1c 13 15 10 16 21 1d 23
-22 21 1c 20 1f 24 29 34  2c 24 27 31 27 1e 1f 2d
-3d 2d 31 36 37 3a 3a 3a  22 2a 3f 44 3e 38 42 33
-37 39 36 01 09 09 09 0c  0a 0c 14 0c 0c 14 0f 0a
-0a 0a 0f 1a 1a 0a 0a 1a  1a 4f 1a 1a 1a 1a 1a 4f
-4f 4f 4f 4f 4f 4f 4f 4f  4f 4f 4f 4f 4f 4f 4f 4f
-                [snip 186 lines]
-5c ad b7 15 b4 6f a0 f7  bc b9 92 dd 60 7b 89 5a
-15 39 58 cb 92 a3 e8 2a  36 76 76 2c cc 58 9e a4
-9a 14 52 d9 24 12 9c a5  f1 37 2f 57 d8 4c 9f 53
-46 e2 3b 9a 64 86 4f a9  a3 27 d6 80 1e 2e 25 55
-2a 25 70 a7 19 01 8e 0e  28 9a e2 6b 86 53 3c b2
-4a 55 76 a9 76 27 03 d3  9e d5 3c b1 bd ec af dc
-b7 52 6d 72 b7 27 17 bc  6f a1 1d 15 44 05 14 00
-51 40 1f ff d9 00 ff ed  00 66 50 68 6f 74 6f 73
-68 6f 70 20 33 2e 30 00  38 42 49 4d 04 04 00 00
-00 00 00 4a 1c 02 78 00  1e 74 69 6d 65 20 6c 61
-70 73 65 20 70 68 6f 74  6f 67 72 61 70 68 79 20
-6f 66 20 66 69 72 65 1c  02 00 00 02 00 04 1c 02
-19 00 05 68 75 6d 61 6e  1c 02 19 00 06 70 65 72
-73 6f 6e 1c 02 19 00 06  70 65 6f 70 6c 65 ff e1
-0a fc 68 74 74 70 3a 2f  2f 6e 73 2e 61 64 6f 62
-65 2e 63 6f 6d 2f 78 61  70 2f 31 2e 30 2f 00 3c
-3f 78 70 61 63 6b 65 74  20 62 65 67 69 6e 3d 27
-ef bb bf 27 20 69 64 3d  27 57 35 4d 30 4d 70 43
-65 68 69 48 7a 72 65 53  7a 4e 54 63 7a 6b 63 39
-64 27 3f 3e 0a 3c 78 3a  78 6d 70 6d 65 74 61 20
-78 6d 6c 6e 73 3a 78 3d  27 61 64 6f 62 65 3a 6e
-                [snip 161 lines]
-20 20 20 0a 20 20 20 20  20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20
-20 20 20 20 20 20 20 20  0a 3c 3f 78 70 61 63 6b
-65 74 20 65 6e 64 3d 27  77 27 3f 3e ff db 00 43
-00 04 03 03 02 03 03 05  02 02 02 03 05 05 03 07
-06 04 07 03 03 07 07 05  08 04 06 11 08 0b 0a 11
-0f 0c 08 0b 0f 1b 17 0b  0b 19 0b 08 08 17 11 0d
-19 1c 10 10 1f 10 0a 17  21 23 20 1d 23 1b 1d 1e
-1d ff db 00 43 01 04 04  04 05 04 05 0a 05 05 0a
-10 0b 08 0b 10 1c 15 1a  1a 15 1c 1c 1c 1c 1c 1c
-1c 1c 1c 1c 1c 1c 1c 1c  1c 1c 1c 1c 1c 1c 1c 1c
-1c 1c 1c 1c 1c 1c 1c 1c  1c 1c 1c 1c 1c 1c 1c 1c
-1c 1c 1c 1c 1c 1c ff c0  00 11 08 06 00 09 00 03
-01 21 00 02 11 01 03 11  01 ff c4 00 1d 00 01 01
-00 02 03 01 01 01 00 00  00 00 00 00 00 00 00 01
-02 05 04 06 07 03 08 09  ff c4 00 49 10 00 02 01
-02 04 05 03 02 03 05 05  07 02 06 00 07 00 01 11
-02 21 03 04 31 41 05 12  51 61 71 06 22 81 13 32
-07 42 91 14 23 52 62 a1  72 b1 c1 e1 f1 08 15 24
-33 82 d1 f0 43 92 16 25  53 a2 b2 c2 34 d2 26 63
-e2 44 64 ff c4 00 1c 01  01 01 00 02 03 01 01 00
-00 00 00 00 00 00 00 00  00 01 02 05 03 04 06 07
-08 ff c4 00 3b 11 01 00  02 02 01 03 03 04 01 03
-02 04 05 04 02 03 00 01  02 03 11 04 05 12 21 31
-41 51 06 13 22 61 71 14  23 32 42 81 24 33 52 b1
-15 62 91 a1 c1 07 25 34  d1 f0 72 43 53 82 ff da
-00 0c 03 01 00 02 11 03  11 00 3f 00 fc 00 56 9a
-d1 04 25 ab c8 9d c1 a2  fa 92 fd 42 af 91 2f 64
-11 1e 9f e0 55 1b a0 a9  dd a1 dd 81 6f d0 47 50
-16 d0 3e b0 11 17 92 be  c1 53 e4 79 00 54 de 90
-04 96 3b 30 08 ae 67 50  87 78 11 bc 05 2f 37 42
-db 01 52 de 45 88 0d a9  d0 78 42 17 62 98 8b 8b
-84 1c ad 7c 91 f7 28 ae  35 62 fa 10 3b 87 d9 08
-               [snip 16504 lines]
-80 a7 46 8b 69 b1 44 7d  c9 6d 64 40 b6 d9 8b a7
-09 81 6f 78 64 51 32 05  bc dd 13 c8 15 ab c2 64
-b6 80 2f a2 16 dd 0d 85  b4 91 6d c7 a0 a9 bd 48
-d2 d1 20 1d 93 1d d0 12  d1 a8 89 d1 14 1a 5b 32
-db 56 80 68 f4 d0 97 d4  04 2d 24 78 5d c0 96 e8
-56 c0 5e 20 97 d8 0b 7d  c2 5b 04 90 96 0a ba 59
-0f 82 05 b5 7b 12 d3 62  8b 7e 83 cb 01 e0 4b d5
-80 b6 a8 9d 9a 01 68 b1  7c 04 3e 40 50 7c 01 ff
-d9
-
-
    ....V.Exif..
-II*.......
-.... .......
-............
-............
-............
-............
-............
-(...........
-2...........
-;...........
-............
-............
-i...........
-%........I..
-      .I..
-
-         .Canon.
-Canon EOS M3....
-..............20
-17:11:12 22:26:1
-6.*.
-............
-............
-"...........
-'...........
-0...........
-2...........
-........0230
-............
-........$...
-............
-........8...
-........@...
-........H...
-........P...
-............
-............
-........X...
-|....D..`...
-.........H..
-........  ..
-........76..
-........76..
-........0100
-............
-............
-............
-.........I..
-.........I..
-.........I..
-............
-............
-............
-............
-............
-............
-........&I..
-............
-0...........
-1........I..
-2.......<I..
-4.......\I..
-5.......zI..
-            ....
-........8.......
-2017:11:12 21:41
-:48.2017:11:12 2
-1:41:48.........
-.... ....... ...
-........7.......
-..
-....2.......
-............
-....".......
-........>...
-........N...
-........x...
-....d...d...
-..........t.
-.........?..
-.........?..
-............
-............
-............
-"........@..
-#........B..
-'........B..
-(........B..
--...........
-.........B..
-/........C..
-1.......6C..
-3.......BC..
-5.......RC..
-7.......bC..
-8.......jC..
-<.......rC..
-=.......&E..
-?...........
-....!...FE..
-.........E..
-...."....E..
-.........F..
-.........F..
-........JF..
-............
-.@......VF..
-.@......\F..
-.@.. ...bF..
-.@.. ....F..
-.@.......F..
-.@.......F..
- @.......F..
-#@.......G..
-$@..5....G..
-+@.......G..
-,@.......G..
-          ....d.
-................
-................
-..... ..../.7...
-....K...........
-......p.p.......
-............(...
-..........D.....
-................
-................
-................
-..............IM
-G:EOS M3 JPEG.Fi
-rmware Version 1
-.01..9..........
-........8.......
-................
-$...............
-................
-................
-............T...
-................
- ...............
-(...<...........
-....d...........
-........x...,...
-................
-Z...............
-....(...........
-....(....$......
-........08......
-.............8..
-................
-d9..,...........
-@...............
-................
-................
-n...............
--...............
-................
-....Z.......Z...
-................
-........Z.......
-................
-................
-................
-     [snip]
-..p..W...+.....
-... .Wq. /..@...
-`.....0...p..O..
-.#..... ... ....
-?._.............
-..?._...........
-..#..... .@.`...
-................
-................
-....=..Z...Z....
-...........].h .
-...Yy......].|..
-...Y............
-................
-...Y.X.....Y....
-................
-................
-...Y............
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-..........p.....
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-..............*.
-................
-..............m.
-.3....Z.8.^../6.
-................
-................
-................
-...."...........
-................
-................
-..%....L..Z.8.^.
-./..............
-..............p)
-.{....1.......p.
-..X...P2..+u....
-P2....Pkdki....1
-N...0.f.0.....0.
-..........i.a...
-....P2..+u....P2
-...1N.S.0...0...
-..0. .0.l.0.....
-0...........i.g.
-......P2..+u....
-P2....Pkdki....1
-N...0.r.0.....0.
-....... ..P2..+u
-....P2...1N.S.0.
-@.0.....0.......
-....i.s.... ..P2
-..+u....P2....Pk
-dki...0.....H...
-0.....0.........
-..i.c........ ..
-P2..+u....P2....
-Pkdki....1N.S.0.
-_.0.....0.......
-....i.g.P2...2.2
-Kt+u....P2....Pk
-dki....1N.......
-................
-...... .........
-................
-......B.........
-................
-..............s.
-b...............
-?.......SA015122
-0............. .
-................
-................
-................
-..........@.....
-................
-................
-................
-................
-................
-................
-..............!.
-".6.............
-................
-................
-................
-................
-.. .............
-................
-..$.............
-................
-................
-................
-..............@.
-................
-................
-................
-................
-................
-......8.........
-................
-................
-................
-................
-................
-................
-................
-................
-................
-......II*.`.....
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-................
-.......(#.o....p
-..J...p...p...07
-3043001183......
-....7...........
-............EF-M
-18-55mm f/3.5-5.
-6 IS STM..000045
-5071....
-........R98.
-........0100
-............
-............
-        ......
-............
-          ......
-............
-.........J..
-........$J..
-(...........
-........,J..
-............
-        ........
-................
-................
-.............!.#
-"!. .$)4,$'1'..-
-=-167:::"*?D>8B3
-796.............
-.........O.....O
-OOOOOOOOOOOOOOOO
-     [snip]
-\....o......`{.Z
-.9X....*6vv,.X..
-..R.$....7/W.L.S
-F.;.d.O..'....%U
-*%p.....(..k.S<.
-JUv.v'....<.....
-.Rmr.'..o...D...
-Q@.......fPhotos
-hop 3.0.8BIM....
-...J..x..time la
-pse photography
-of fire.........
-...human.....per
-son.....people..
-..http://ns.adob
-e.com/xap/1.0/.<
-?xpacket begin='
-...' id='W5M0MpC
-ehiHzreSzNTczkc9
-d'?>.<x:xmpmeta
-xmlns:x='adobe:n
-     [snip]
-   .
-
-
-
-
-
-        .<?xpack
-et end='w'?>...C
-................
-................
-................
-........!# .#...
-....C...........
-................
-................
-................
-................
-.!..............
-................
-...........I....
-................
-.!..1A..Qaq."..2
-.B..#Rb.r......$
-3...C..%S...4.&c
-.Dd.............
-................
-....;...........
-..............!1
-AQ.."aq.#2B.$3R.
-.b....%4..rCS...
-..........?...V.
-..%........B../d
-....U.......o.GP
-..>......S.y.T..
-..;0..gP.x.../7B
-..R.E....xB.b...
-...|..(.5b..;...
-     [snip]
-..F.i.D}.md@....
-..oxdQ2........d
-../.......m....H
-.. ...........[2
-.V.h.....-$x]...
-V.^ ...}.[.....Y
-....{..b.~....K.
-......h.|.>@P|..
-.
-
-
JPEG header APP1 header Exif header
-TIFF header IFD0 entries
-IFD0-00 ImageDescription
-IFD0-01 Make
-IFD0-02 Model
-IFD0-03 Orientation
-IFD0-04 XResolution
-IFD0-05 YResolution
-IFD0-06 ResolutionUnit
-IFD0-07 ModifyDate
-IFD0-08 Artist
-IFD0-09 YCbCrPositioning
-IFD0-10 Copyright
-IFD0-11 ExifOffset
-IFD0-12 GPSInfo
-Next IFD
-ImageDescription value
-Make value
-Model value [pad byte]
-XResolution value YResolution value
-ModifyDate value
-ExifIFD entries
-ExifIFD-00 ExposureTime
-ExifIFD-01 FNumber
-ExifIFD-02 ExposureProgram
-ExifIFD-03 ISO
-ExifIFD-04 SensitivityType
-ExifIFD-05 RecommendedExposureIndex
-ExifIFD-06 ExifVersion
-ExifIFD-07 DateTimeOriginal
-ExifIFD-08 CreateDate
-ExifIFD-09 ComponentsConfiguration
-ExifIFD-10 CompressedBitsPerPixel
-ExifIFD-11 ShutterSpeedValue
-ExifIFD-12 ApertureValue
-ExifIFD-13 ExposureCompensation
-ExifIFD-14 MeteringMode
-ExifIFD-15 Flash
-ExifIFD-16 FocalLength
-ExifIFD-17 MakerNoteCanon
-ExifIFD-18 UserComment
-ExifIFD-19 SubSecTime
-ExifIFD-20 SubSecTimeOriginal
-ExifIFD-21 SubSecTimeDigitized
-ExifIFD-22 FlashpixVersion
-ExifIFD-23 ColorSpace
-ExifIFD-24 ExifImageWidth
-ExifIFD-25 ExifImageHeight
-ExifIFD-26 InteropOffset
-ExifIFD-27 FocalPlaneXResolution
-ExifIFD-28 FocalPlaneYResolution
-ExifIFD-29 FocalPlaneResolutionUnit
-ExifIFD-30 SensingMethod
-ExifIFD-31 FileSource
-ExifIFD-32 CustomRendered
-ExifIFD-33 ExposureMode
-ExifIFD-34 WhiteBalance
-ExifIFD-35 DigitalZoomRatio
-ExifIFD-36 SceneCaptureType
-ExifIFD-37 OwnerName
-ExifIFD-38 SerialNumber
-ExifIFD-39 LensInfo
-ExifIFD-40 LensModel
-ExifIFD-41 LensSerialNumber
-Next IFD
-ExposureTime value FNumber value
-DateTimeOriginal value
-CreateDate value
-CompressedBitsPerPixel value
-ShutterSpeedValue value ApertureValue value
-ExposureCompensation value FocalLength value
-MakerNoteCanon entries
-MakerNotes-00 CanonCameraSettings
-MakerNotes-01 CanonFlashInfo
-MakerNotes-02 CanonShotInfo
-MakerNotes-03 CanonImageType
-MakerNotes-04 CanonFirmwareVersion
-MakerNotes-05 FileNumber
-MakerNotes-06 CanonCameraInfoUnknown32
-MakerNotes-07 CanonModelID
-MakerNotes-08 ThumbnailImageValidArea
-MakerNotes-09 Tag 0x0018
-MakerNotes-10 Tag 0x0019
-MakerNotes-11 DateStampMode
-MakerNotes-12 FirmwareRevision
-MakerNotes-13 Tag 0x0022
-MakerNotes-14 Categories
-MakerNotes-15 ContrastInfo
-MakerNotes-16 ImageUniqueID
-MakerNotes-17 Tag 0x002d
-MakerNotes-18 Tag 0x002e
-MakerNotes-19 FaceDetect3
-MakerNotes-20 Tag 0x0031
-MakerNotes-21 Tag 0x0033
-MakerNotes-22 TimeInfo
-MakerNotes-23 Tag 0x0037
-MakerNotes-24 Tag 0x0038
-MakerNotes-25 AFInfo3
-MakerNotes-26 Tag 0x003d
-MakerNotes-27 Tag 0x003f
-MakerNotes-28 CanonFileInfo
-MakerNotes-29 InternalSerialNumber
-MakerNotes-30 CustomFunctions2
-MakerNotes-31 AspectInfo
-MakerNotes-32 ProcessingInfo
-MakerNotes-33 MeasuredColor
-MakerNotes-34 VRDOffset
-MakerNotes-35 PictureStyleUserDef
-MakerNotes-36 PictureStylePC
-MakerNotes-37 CustomPictureStyleFileName
-MakerNotes-38 Tag 0x4012
-MakerNotes-39 VignettingCorr2
-MakerNotes-40 LightingOpt
-MakerNotes-41 AmbienceInfo
-MakerNotes-42 Tag 0x4023
-MakerNotes-43 FilterInfo
-MakerNotes-44 Tag 0x402b
-MakerNotes-45 Tag 0x402c
-Next IFD
-CanonCameraSettings value
-
-
-
-
-
-CanonFlashInfo value
-CanonShotInfo value
-
-
-CanonImageType value
-CanonFirmwareVersion value
-
-CanonCameraInfoUnknown32 value
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ThumbnailImageValidArea value
-Tag 0x0018 value
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Tag 0x0022 value
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Categories value
-ContrastInfo value
-
-ImageUniqueID value
-Tag 0x002e value
-
-
-
-FaceDetect3 value
-
-Tag 0x0031 value
-Tag 0x0033 value
-TimeInfo value
-Tag 0x0037 value
-Tag 0x0038 value
-AFInfo3 value
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Tag 0x003d value
-
-CanonFileInfo value
-
-
-
-InternalSerialNumber value
-CustomFunctions2 value
-
-
-
-
-
-
-
-AspectInfo value
-ProcessingInfo value
-
-MeasuredColor value
-PictureStyleUserDef value
-PictureStylePC value
-CustomPictureStyleFileName value
-Tag 0x4012 value
-
-VignettingCorr2 value
-
-LightingOpt value
-
-AmbienceInfo value
-
-Tag 0x4023 value
-FilterInfo value
-
-
-
-
-
-
-
-
-
-
-
-
-Tag 0x402b value
-Tag 0x402c value
-[Canon MakerNotes footer]
-UserComment value
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-FocalPlaneXResolution value
-FocalPlaneYResolution value DigitalZoomRatio value
-SerialNumber value [pad byte]
-LensInfo value
-LensModel value
-
-[pad byte]
-LensSerialNumber value [pad byte] InteropIFD entries
-InteropIFD-00 InteropIndex
-InteropIFD-01 InteropVersion
-InteropIFD-02 RelatedImageWidth
-InteropIFD-03 RelatedImageHeight
-Next IFD GPS entries
-GPS-00 GPSVersionID
-Next IFD IFD1 entries
-IFD1-00 Compression
-IFD1-01 XResolution
-IFD1-02 YResolution
-IFD1-03 ResolutionUnit
-IFD1-04 ThumbnailOffset
-IFD1-05 ThumbnailLength
-Next IFD
-XResolution value YResolution value
-(IFD1:Thumbnail data)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[pad byte]
-APP13 Photoshop segment
-
-
-
-
-APP1 XMP segment
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-[JPEG DQT]
-
-
-
-
-[JPEG DQT]
-
-
-
-[JPEG SOF0]
-[JPEG DHT]
-
-[JPEG DHT]
-
-
-
-
-[JPEG DHT]
-
-[JPEG DHT]
-
-
-[JPEG Image Data]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-JPEG EOI
-
-
-
-
-
JPEG header
SOI Marker
(2 bytes)
-
APP1 header
Data size: 22204 bytes
(4 bytes)
-
Exif header
APP1 data type: Exif
(6 bytes)
-
TIFF header
Byte order: Little endian
Identifier: 0x002a
IFD0 offset: 0x0008
(8 - bytes) -
-
IFD0 entries
Entry count: 13
(2 bytes)
-
IFD0-00 ImageDescription
Tag ID: 0x010e
Format: string[32]
Size: - 32 bytes
Value offset: 0x00aa
File offset: 0x00b6
Value: -
-
IFD0-01 Make
Tag ID: 0x010f
Format: string[6]
Size: 6 bytes
Value - offset: 0x00ca
File offset: 0x00d6
Value: Canon -
-
IFD0-02 Model
Tag ID: 0x0110
Format: string[13]
Size: 13 - bytes
Value offset: 0x00d0
File offset: 0x00dc
Value: Canon EOS M3 -
-
IFD0-03 Orientation
Tag ID: 0x0112
Format: int16u[1]
Size: 2 bytes
Value: 1
-
IFD0-04 XResolution
Tag ID: 0x011a
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x00de
File offset: 0x00ea
Value: 180 (180/1) -
-
IFD0-05 YResolution
Tag ID: 0x011b
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x00e6
File offset: 0x00f2
Value: 180 (180/1) -
-
IFD0-06 ResolutionUnit
Tag ID: 0x0128
Format: int16u[1]
Size: 2 bytes
Value: 2 -
-
IFD0-07 ModifyDate
Tag ID: 0x0132
Format: string[20]
Size: 20 - bytes
Value offset: 0x00ee
File offset: 0x00fa
Value: 2017:11:12 22:26:16 -
-
IFD0-08 Artist
Tag ID: 0x013b
Format: string[1]
Size: 1 bytes
Value:
-
IFD0-09 YCbCrPositioning
Tag ID: 0x0213
Format: int16u[1]
Size: 2 bytes
Value: 2 -
-
IFD0-10 Copyright
Tag ID: 0x8298
Format: string[1] read as undef[1]
Size: 1 - bytes
Value: . -
-
IFD0-11 ExifOffset
Tag ID: 0x8769
Format: int32u[1]
Size: 4 bytes
Value: 0x0102 -
-
IFD0-12 GPSInfo
Tag ID: 0x8825
Format: int32u[1]
Size: 4 bytes
Value: 0x49bc -
-
Next IFD
IFD1 offset: 0x49ce
(4 bytes)
-
ExifIFD entries
Entry count: 42
(2 bytes)
-
ExifIFD-00 ExposureTime
Tag ID: 0x829a
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x0300
File offset: 0x030c
Value: 0.00025 (1/4000) -
-
ExifIFD-01 FNumber
Tag ID: 0x829d
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x0308
File offset: 0x0314
Value: 5.6 (56/10) -
-
ExifIFD-02 ExposureProgram
Tag ID: 0x8822
Format: int16u[1]
Size: 2 bytes
Value: - 4 -
-
ExifIFD-03 ISO
Tag ID: 0x8827
Format: int16u[1]
Size: 2 bytes
Value: 3200
-
ExifIFD-04 SensitivityType
Tag ID: 0x8830
Format: int16u[1]
Size: 2 bytes
Value: - 2 -
-
ExifIFD-05 RecommendedExposureIndex
Tag ID: 0x8832
Format: int32u[1]
Size: 4 - bytes
Value: 3200 -
-
ExifIFD-06 ExifVersion
Tag ID: 0x9000
Format: undef[4]
Size: 4 bytes
Value: 0230 -
-
ExifIFD-07 DateTimeOriginal
Tag ID: 0x9003
Format: string[20]
Size: - 20 bytes
Value offset: 0x0310
File offset: 0x031c
Value: 2017:11:12 21:41:48 -
-
ExifIFD-08 CreateDate
Tag ID: 0x9004
Format: string[20]
Size: - 20 bytes
Value offset: 0x0324
File offset: 0x0330
Value: 2017:11:12 21:41:48 -
-
ExifIFD-09 ComponentsConfiguration
Tag ID: 0x9101
Format: undef[4] read as - int8u[4]
Size: 4 bytes
Value: 1 2 3 0 -
-
ExifIFD-10 CompressedBitsPerPixel
Tag ID: 0x9102
Format: - rational64u[1]
Size: 8 bytes
Value offset: 0x0338
File offset: 0x0344
Value: 3 (3/1) -
-
ExifIFD-11 ShutterSpeedValue
Tag ID: 0x9201
Format: - rational64s[1]
Size: 8 bytes
Value offset: 0x0340
File offset: 0x034c
Value: 11.96875 (383/32) -
-
ExifIFD-12 ApertureValue
Tag ID: 0x9202
Format: - rational64u[1]
Size: 8 bytes
Value offset: 0x0348
File offset: 0x0354
Value: 4.96875 (159/32) -
-
ExifIFD-13 ExposureCompensation
Tag ID: 0x9204
Format: - rational64s[1]
Size: 8 bytes
Value offset: 0x0350
File offset: 0x035c
Value: 0 (0/3) -
-
ExifIFD-14 MeteringMode
Tag ID: 0x9207
Format: int16u[1]
Size: 2 bytes
Value: 5 -
-
ExifIFD-15 Flash
Tag ID: 0x9209
Format: int16u[1]
Size: 2 bytes
Value: 0x10 -
-
ExifIFD-16 FocalLength
Tag ID: 0x920a
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x0358
File offset: 0x0364
Value: 55 (55/1) -
-
ExifIFD-17 MakerNoteCanon
Tag ID: 0x927c
Format: undef[17582]
Size: - 17582 bytes
Value offset: 0x0360
File offset: 0x036c
Value: ......2.....................[...] -
-
ExifIFD-18 UserComment
Tag ID: 0x9286
Format: undef[264]
Size: - 264 bytes
Value offset: 0x480e
File offset: 0x481a
Value: ............................[...] -
-
ExifIFD-19 SubSecTime
Tag ID: 0x9290
Format: string[3]
Size: 3 bytes
Value: -
-
ExifIFD-20 SubSecTimeOriginal
Tag ID: 0x9291
Format: string[3]
Size: 3 bytes
Value: - 76 -
-
ExifIFD-21 SubSecTimeDigitized
Tag ID: 0x9292
Format: string[3]
Size: 3 bytes
Value: - 76 -
-
ExifIFD-22 FlashpixVersion
Tag ID: 0xa000
Format: undef[4]
Size: 4 bytes
Value: - 0100 -
-
ExifIFD-23 ColorSpace
Tag ID: 0xa001
Format: int16u[1]
Size: 2 bytes
Value: 0x1 -
-
ExifIFD-24 ExifImageWidth
Tag ID: 0xa002
Format: int16u[1]
Size: 2 bytes
Value: - 2304 -
-
ExifIFD-25 ExifImageHeight
Tag ID: 0xa003
Format: int16u[1]
Size: 2 bytes
Value: - 1536 -
-
ExifIFD-26 InteropOffset
Tag ID: 0xa005
Format: int32u[1]
Size: 4 bytes
Value: - 0x4986 -
-
ExifIFD-27 FocalPlaneXResolution
Tag ID: 0xa20e
Format: - rational64u[1]
Size: 8 bytes
Value offset: 0x4916
File offset: 0x4922
Value: 2621.16041 (2304000/879) -
-
ExifIFD-28 FocalPlaneYResolution
Tag ID: 0xa20f
Format: - rational64u[1]
Size: 8 bytes
Value offset: 0x491e
File offset: 0x492a
Value: 2621.16041 (1536000/586) -
-
ExifIFD-29 FocalPlaneResolutionUnit
Tag ID: 0xa210
Format: int16u[1]
Size: 2 - bytes
Value: 2 -
-
ExifIFD-30 SensingMethod
Tag ID: 0xa217
Format: int16u[1]
Size: 2 bytes
Value: 2 -
-
ExifIFD-31 FileSource
Tag ID: 0xa300
Format: undef[1]
Size: 1 bytes
Value: 3 -
-
ExifIFD-32 CustomRendered
Tag ID: 0xa401
Format: int16u[1]
Size: 2 bytes
Value: - 0 -
-
ExifIFD-33 ExposureMode
Tag ID: 0xa402
Format: int16u[1]
Size: 2 bytes
Value: 0 -
-
ExifIFD-34 WhiteBalance
Tag ID: 0xa403
Format: int16u[1]
Size: 2 bytes
Value: 1 -
-
ExifIFD-35 DigitalZoomRatio
Tag ID: 0xa404
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x4926
File offset: 0x4932
Value: 1 (6000/6000) -
-
ExifIFD-36 SceneCaptureType
Tag ID: 0xa406
Format: int16u[1]
Size: 2 bytes
Value: - 0 -
-
ExifIFD-37 OwnerName
Tag ID: 0xa430
Format: string[1]
Size: 1 bytes
Value:
-
ExifIFD-38 SerialNumber
Tag ID: 0xa431
Format: string[13]
Size: - 13 bytes
Value offset: 0x492e
File offset: 0x493a
Value: 073043001183 -
-
ExifIFD-39 LensInfo
Tag ID: 0xa432
Format: rational64u[4]
Size: - 32 bytes
Value offset: 0x493c
File offset: 0x4948
Value: 18 55 0 0 (18/1 55/1 0/1 0/1) -
-
ExifIFD-40 LensModel
Tag ID: 0xa434
Format: string[29]
Size: - 29 bytes
Value offset: 0x495c
File offset: 0x4968
Value: EF-M18-55mm f/3.5-5.6 IS STM -
-
ExifIFD-41 LensSerialNumber
Tag ID: 0xa435
Format: string[11]
Size: - 11 bytes
Value offset: 0x497a
File offset: 0x4986
Value: 0000455071 -
-
Next IFD
Next IFD offset: 0x0000
(4 bytes)
-
MakerNoteCanon entries
Entry count: 46
(2 bytes)
-
MakerNotes-00 CanonCameraSettings
Tag ID: 0x0001
Format: - int16u[50] read as undef[100]
Size: 100 bytes
Value offset: 0x058e
File offset: 0x059a
Value: - d...........................[...] -
-
MakerNotes-01 CanonFlashInfo
Tag ID: 0x0003
Format: int16u[4]
Size: - 8 bytes
Value offset: 0x05f2
File offset: 0x05fe
Value: 0 0 0 0 -
-
MakerNotes-02 CanonShotInfo
Tag ID: 0x0004
Format: int16u[34] - read as undef[68]
Size: 68 bytes
Value offset: 0x05fa
File offset: 0x0606
Value: - D...........................[...] -
-
MakerNotes-03 CanonImageType
Tag ID: 0x0006
Format: - string[16]
Size: 16 bytes
Value offset: 0x063e
File offset: 0x064a
Value: IMG:EOS M3 JPEG -
-
MakerNotes-04 CanonFirmwareVersion
Tag ID: 0x0007
Format: - string[22]
Size: 22 bytes
Value offset: 0x064e
File offset: 0x065a
Value: Firmware Version 1.01 -
-
MakerNotes-05 FileNumber
Tag ID: 0x0008
Format: int32u[1]
Size: 4 bytes
Value: - 1237368 -
-
MakerNotes-06 CanonCameraInfoUnknown32
Tag ID: 0x000d
Format: - int32u[3684] read as undef[14736]
Size: 14736 bytes
Value offset: 0x0664
File offset: 0x0670
Value: - .9..................8.......[...] -
-
MakerNotes-07 CanonModelID
Tag ID: 0x0010
Format: int32u[1]
Size: 4 bytes
Value: - 0x3740000 -
-
MakerNotes-08 ThumbnailImageValidArea
Tag ID: 0x0013
Format: - int16u[4]
Size: 8 bytes
Value offset: 0x3ff4
File offset: 0x4000
Value: 0 159 7 112 -
-
MakerNotes-09 Tag 0x0018
Tag ID: 0x0018
Format: int8u[256]
Size: - 256 bytes
Value offset: 0x3ffc
File offset: 0x4008
Value: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 [...] -
-
MakerNotes-10 Tag 0x0019
Tag ID: 0x0019
Format: int16u[1]
Size: 2 bytes
Value: 1 -
-
MakerNotes-11 DateStampMode
Tag ID: 0x001c
Format: int16u[1]
Size: 2 bytes
Value: - 0 -
-
MakerNotes-12 FirmwareRevision
Tag ID: 0x001e
Format: int32u[1]
Size: 4 bytes
Value: - 16843008 -
-
MakerNotes-13 Tag 0x0022
Tag ID: 0x0022
Format: int16u[208]
Size: - 416 bytes
Value offset: 0x40fc
File offset: 0x4108
Value: 416 0 0 16 8 1 1 640 480 0 0[...] -
-
MakerNotes-14 Categories
Tag ID: 0x0023
Format: int32u[2]
Size: - 8 bytes
Value offset: 0x429c
File offset: 0x42a8
Value: 8 0 -
-
MakerNotes-15 ContrastInfo
Tag ID: 0x0027
Format: int16u[21] read - as undef[42]
Size: 42 bytes
Value offset: 0x42a4
File offset: 0x42b0
Value: - ..........*.................[...] -
-
MakerNotes-16 ImageUniqueID
Tag ID: 0x0028
Format: int8u[16] read - as undef[16]
Size: 16 bytes
Value offset: 0x42ce
File offset: 0x42da
Value: m..3....Z.8.^../ -
-
MakerNotes-17 Tag 0x002d
Tag ID: 0x002d
Format: int32u[1]
Size: 4 bytes
Value: 0 -
-
MakerNotes-18 Tag 0x002e
Tag ID: 0x002e
Format: int16u[27]
Size: - 54 bytes
Value offset: 0x42de
File offset: 0x42ea
Value: 54 32767 32767 65535 65535 3[...] -
-
MakerNotes-19 FaceDetect3
Tag ID: 0x002f
Format: int16u[17] read - as undef[34]
Size: 34 bytes
Value offset: 0x4314
File offset: 0x4320
Value: "...........................[...] -
-
MakerNotes-20 Tag 0x0031
Tag ID: 0x0031
Format: int16u[6]
Size: - 12 bytes
Value offset: 0x4336
File offset: 0x4342
Value: 12 1 65535 65535 65535 65535 -
-
MakerNotes-21 Tag 0x0033
Tag ID: 0x0033
Format: int32u[4]
Size: - 16 bytes
Value offset: 0x4342
File offset: 0x434e
Value: 2801211429 3704704190 218476[...] -
-
MakerNotes-22 TimeInfo
Tag ID: 0x0035
Format: int32u[4] read as - undef[16]
Size: 16 bytes
Value offset: 0x4352
File offset: 0x435e
Value: ................ -
-
MakerNotes-23 Tag 0x0037
Tag ID: 0x0037
Format: int32u[2]
Size: - 8 bytes
Value offset: 0x4362
File offset: 0x436e
Value: 8 0 -
-
MakerNotes-24 Tag 0x0038
Tag ID: 0x0038
Format: undef[8]
Size: - 8 bytes
Value offset: 0x436a
File offset: 0x4376
Value: ....p).{ -
-
MakerNotes-25 AFInfo3
Tag ID: 0x003c
Format: int16u[218] read as - undef[436]
Size: 436 bytes
Value offset: 0x4372
File offset: 0x437e
Value: - ....1.......p...X...P2..+u..[...] -
-
MakerNotes-26 Tag 0x003d
Tag ID: 0x003d
Format: int32u[8]
Size: - 32 bytes
Value offset: 0x4526
File offset: 0x4532
Value: 32 1 0 0 0 0 0 0 -
-
MakerNotes-27 Tag 0x003f
Tag ID: 0x003f
Format: int32u[1]
Size: 4 bytes
Value: 1 -
-
MakerNotes-28 CanonFileInfo
Tag ID: 0x0093
Format: int16u[33] - read as undef[66]
Size: 66 bytes
Value offset: 0x4546
File offset: 0x4552
Value: - B...........................[...] -
-
MakerNotes-29 InternalSerialNumber
Tag ID: 0x0096
Format: - string[10]
Size: 10 bytes
Value offset: 0x4588
File offset: 0x4594
Value: SA0151220 -
-
MakerNotes-30 CustomFunctions2
Tag ID: 0x0099
Format: int32u[34] - read as undef[136]
Size: 136 bytes
Value offset: 0x4592
File offset: 0x459e
Value: ............ - ...............[...] -
-
MakerNotes-31 AspectInfo
Tag ID: 0x009a
Format: int32u[5] read as - undef[20]
Size: 20 bytes
Value offset: 0x461a
File offset: 0x4626
Value: .................... -
-
MakerNotes-32 ProcessingInfo
Tag ID: 0x00a0
Format: int16u[14] - read as undef[28]
Size: 28 bytes
Value offset: 0x462e
File offset: 0x463a
Value: - ............................ -
-
MakerNotes-33 MeasuredColor
Tag ID: 0x00aa
Format: int16u[6] read - as undef[12]
Size: 12 bytes
Value offset: 0x464a
File offset: 0x4656
Value: ....!.".6... -
-
MakerNotes-34 VRDOffset
Tag ID: 0x00d0
Format: int32u[1]
Size: 4 bytes
Value: 0 -
-
MakerNotes-35 PictureStyleUserDef
Tag ID: 0x4008
Format: - int16u[3]
Size: 6 bytes
Value offset: 0x4656
File offset: 0x4662
Value: 135 135 135 -
-
MakerNotes-36 PictureStylePC
Tag ID: 0x4009
Format: - int16u[3]
Size: 6 bytes
Value offset: 0x465c
File offset: 0x4668
Value: 255 255 255 -
-
MakerNotes-37 CustomPictureStyleFileName
Tag ID: 0x4010
Format: - string[32]
Size: 32 bytes
Value offset: 0x4662
File offset: 0x466e
Value: -
-
MakerNotes-38 Tag 0x4012
Tag ID: 0x4012
Format: string[32]
Size: - 32 bytes
Value offset: 0x4682
File offset: 0x468e
Value: -
-
MakerNotes-39 VignettingCorr2
Tag ID: 0x4016
Format: int32u[8] - read as undef[32]
Size: 32 bytes
Value offset: 0x46a2
File offset: 0x46ae
Value: - ............................... -
-
MakerNotes-40 LightingOpt
Tag ID: 0x4018
Format: int32u[9] read - as undef[36]
Size: 36 bytes
Value offset: 0x46c2
File offset: 0x46ce
Value: - $...........................[...] -
-
MakerNotes-41 AmbienceInfo
Tag ID: 0x4020
Format: int32u[7] read - as undef[28]
Size: 28 bytes
Value offset: 0x46e6
File offset: 0x46f2
Value: ............................ -
-
MakerNotes-42 Tag 0x4023
Tag ID: 0x4023
Format: int32u[4]
Size: - 16 bytes
Value offset: 0x4702
File offset: 0x470e
Value: 16 1 4320 2880 -
-
MakerNotes-43 FilterInfo
Tag ID: 0x4024
Format: int32u[53] read - as undef[212]
Size: 212 bytes
Value offset: 0x4712
File offset: 0x471e
Value: - ............................[...] -
-
MakerNotes-44 Tag 0x402b
Tag ID: 0x402b
Format: int32u[6]
Size: - 24 bytes
Value offset: 0x47e6
File offset: 0x47f2
Value: 24 0 0 0 0 0 -
-
MakerNotes-45 Tag 0x402c
Tag ID: 0x402c
Format: int32u[2]
Size: - 8 bytes
Value offset: 0x47fe
File offset: 0x480a
Value: 8 0 -
-
Next IFD
Next IFD offset: 0x0000
(4 bytes)
-
[Canon MakerNotes footer]
Original maker note offset: 0x0360
(8 bytes)
-
InteropIFD entries
Entry count: 4
(2 bytes)
-
InteropIFD-00 InteropIndex
Tag ID: 0x0001
Format: string[4]
Size: 4 bytes
Value: - R98 -
-
InteropIFD-01 InteropVersion
Tag ID: 0x0002
Format: undef[4]
Size: 4 bytes
Value: - 0100 -
-
InteropIFD-02 RelatedImageWidth
Tag ID: 0x1001
Format: int16u[1]
Size: 2 bytes
Value: - 2304 -
-
InteropIFD-03 RelatedImageHeight
Tag ID: 0x1002
Format: int16u[1]
Size: 2 - bytes
Value: 1536 -
-
Next IFD
Next IFD offset: 0x0000
(4 bytes)
-
GPS entries
Entry count: 1
(2 bytes)
-
GPS-00 GPSVersionID
Tag ID: 0x0000
Format: int8u[4]
Size: 4 bytes
Value: 2 3 0 - 0 -
-
Next IFD
Next IFD offset: 0x0000
(4 bytes)
-
IFD1 entries
Entry count: 6
(2 bytes)
-
IFD1-00 Compression
Tag ID: 0x0103
Format: int16u[1]
Size: 2 bytes
Value: 6 -
-
IFD1-01 XResolution
Tag ID: 0x011a
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x4a1c
File offset: 0x4a28
Value: 180 (180/1) -
-
IFD1-02 YResolution
Tag ID: 0x011b
Format: rational64u[1]
Size: - 8 bytes
Value offset: 0x4a24
File offset: 0x4a30
Value: 180 (180/1) -
-
IFD1-03 ResolutionUnit
Tag ID: 0x0128
Format: int16u[1]
Size: 2 bytes
Value: 2 -
-
IFD1-04 ThumbnailOffset
Tag ID: 0x0201
Format: int32u[1]
Size: 4 bytes
Value: - 0x4a2c -
-
IFD1-05 ThumbnailLength
Tag ID: 0x0202
Format: int32u[1]
Size: 4 bytes
Value: - 3209 -
-
Next IFD
IFD2 offset: 0x0000
(4 bytes)
-
(IFD1:Thumbnail data)
Size: 3209 bytes
-
APP13 Photoshop segment
(104 bytes)
-
APP1 XMP segment
(2814 bytes)
-
[JPEG DQT]
(69 bytes)
-
[JPEG DQT]
(69 bytes)
-
[JPEG SOF0]
(19 bytes)
-
[JPEG DHT]
(31 bytes)
-
[JPEG DHT]
(75 bytes)
-
[JPEG DHT]
(30 bytes)
-
[JPEG DHT]
(61 bytes)
-
[JPEG Image Data]
(264305 bytes)
-
JPEG EOI
(2 bytes)
- -