From bd4333447e0dfbac097f60e0ed675277219dd743 Mon Sep 17 00:00:00 2001 From: acc987 <39603492+acc987@users.noreply.github.com> Date: Thu, 3 Apr 2025 18:16:19 +0200 Subject: [PATCH] Add OffsetTime* Exif tags Closes GH-18237. --- NEWS | 3 ++ UPGRADING | 3 ++ ext/exif/exif.c | 6 ++++ ext/exif/tests/exif028.phpt | 59 ++++++++++++++++++++++++++++++++++++ ext/exif/tests/image028.jpg | Bin 0 -> 527 bytes 5 files changed, 71 insertions(+) create mode 100644 ext/exif/tests/exif028.phpt create mode 100644 ext/exif/tests/image028.jpg diff --git a/NEWS b/NEWS index 65cebd217e1..c37cec11fda 100644 --- a/NEWS +++ b/NEWS @@ -63,6 +63,9 @@ PHP NEWS . Added enchant_dict_remove_from_session(). (nielsdos) . Added enchant_dict_remove(). (nielsdos) +- EXIF: + . Add OffsetTime* Exif tags. (acc987) + - Fileinfo: . Upgrade to file 5.46. (nielsdos) diff --git a/UPGRADING b/UPGRADING index 26ed02c9af9..6cc0cc537df 100644 --- a/UPGRADING +++ b/UPGRADING @@ -151,6 +151,9 @@ PHP 8.5 UPGRADE NOTES - DOM: . Added Dom\Element::$outerHTML. +- EXIF: + . Add OffsetTime* Exif tags. + - XSL: . The $namespace argument of XSLTProcessor::getParameter(), XSLTProcessor::setParameter() and XSLTProcessor::removeParameter() diff --git a/ext/exif/exif.c b/ext/exif/exif.c index 0f63c76e232..91698617288 100644 --- a/ext/exif/exif.c +++ b/ext/exif/exif.c @@ -420,6 +420,9 @@ static char *exif_get_tagformat(int format) #define TAG_EXIFVERSION 0x9000 #define TAG_DATE_TIME_ORIGINAL 0x9003 #define TAG_DATE_TIME_DIGITIZED 0x9004 +#define TAG_OFFSET_TIME 0x9010 +#define TAG_OFFSET_TIME_ORIGINAL 0x9011 +#define TAG_OFFSET_TIME_DIGITIZED 0x9012 #define TAG_COMPONENT_CONFIG 0x9101 #define TAG_COMPRESSED_BITS_PER_PIXEL 0x9102 #define TAG_SHUTTERSPEED 0x9201 @@ -692,6 +695,9 @@ static tag_info_array tag_table_IFD = { { 0x9000, "ExifVersion"}, { 0x9003, "DateTimeOriginal"}, { 0x9004, "DateTimeDigitized"}, + { 0x9010, "OffsetTime"}, + { 0x9011, "OffsetTimeOriginal"}, + { 0x9012, "OffsetTimeDigitized"}, { 0x9101, "ComponentsConfiguration"}, { 0x9102, "CompressedBitsPerPixel"}, { 0x9201, "ShutterSpeedValue"}, diff --git a/ext/exif/tests/exif028.phpt b/ext/exif/tests/exif028.phpt new file mode 100644 index 00000000000..5ca06616ba6 --- /dev/null +++ b/ext/exif/tests/exif028.phpt @@ -0,0 +1,59 @@ +--TEST-- +Check for exif_read_data, JPEG with IFD data containg OffsetTime, OffsetTimeOriginal, and OffsetTimeDigitized tags in Motorola byte-order. +--EXTENSIONS-- +exif +--INI-- +output_handler= +zlib.output_compression=0 +--FILE-- + +--EXPECTF-- +array(17) { + ["FileName"]=> + string(12) "image028.jpg" + ["FileDateTime"]=> + int(%d) + ["FileSize"]=> + int(%d) + ["FileType"]=> + int(2) + ["MimeType"]=> + string(10) "image/jpeg" + ["SectionsFound"]=> + string(13) "ANY_TAG, IFD0" + ["COMPUTED"]=> + array(5) { + ["html"]=> + string(20) "width="1" height="1"" + ["Height"]=> + int(1) + ["Width"]=> + int(1) + ["IsColor"]=> + int(1) + ["ByteOrderMotorola"]=> + int(1) + } + ["XResolution"]=> + string(5) "300/1" + ["YResolution"]=> + string(5) "300/1" + ["ResolutionUnit"]=> + int(2) + ["DateTime"]=> + string(19) "2025:04:03 00:02:00" + ["YCbCrPositioning"]=> + int(1) + ["DateTimeOriginal"]=> + string(19) "2025:04:03 00:00:00" + ["DateTimeDigitized"]=> + string(19) "2025:04:03 00:01:00" + ["OffsetTime"]=> + string(6) "-02:00" + ["OffsetTimeOriginal"]=> + string(6) "+00:00" + ["OffsetTimeDigitized"]=> + string(6) "-01:00" +} diff --git a/ext/exif/tests/image028.jpg b/ext/exif/tests/image028.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57110cec8f768dcd6ea9970a20f37f783c7a9d74 GIT binary patch literal 527 zcmbV|F>V4e5JmsspdduCCaIvIM6gK1LYi$T5G#SiHITRg9bL-ERSuCupcFYlDza%H zN8kcxWH`5YYp6;!E#vM7>#rDo7? z)P^Z|Nj4M6h-b<7($kqsg)@PFxQC!OE-Lh+od0$<=-kzV{*yfkeU