1
0
mirror of https://github.com/bpatrik/pigallery2.git synced 2024-12-23 01:27:14 +02:00

Feature/caption and title (#14)

* reading caption and title from several tags with several tests added
minor bugfix for date conversion to MS
optimization: break sidecar loop, when first sidecar is found
This commit is contained in:
grasdk 2024-03-31 14:57:20 +02:00 committed by GitHub
parent 086bc47a01
commit 75d81d42bd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
20 changed files with 1022 additions and 3 deletions

View File

@ -139,13 +139,13 @@ export class MetadataLoader {
fullPathWithoutExt + '.xmp', fullPathWithoutExt + '.xmp',
fullPathWithoutExt + '.XMP', fullPathWithoutExt + '.XMP',
]; ];
for (const sidecarPath of sidecarPaths) { for (const sidecarPath of sidecarPaths) {
if (fs.existsSync(sidecarPath)) { if (fs.existsSync(sidecarPath)) {
const sidecarData: any = await exifr.sidecar(sidecarPath); const sidecarData: any = await exifr.sidecar(sidecarPath);
if (sidecarData !== undefined) { if (sidecarData !== undefined) {
MetadataLoader.mapMetadata(metadata, sidecarData); MetadataLoader.mapMetadata(metadata, sidecarData);
} }
break; //Break the loop as soon as a sidecar is found, no need to check the extra sidecar paths
} }
} }
} catch (err) { } catch (err) {
@ -316,6 +316,8 @@ export class MetadataLoader {
const orientation = MetadataLoader.getOrientation(exif); const orientation = MetadataLoader.getOrientation(exif);
MetadataLoader.mapImageDimensions(metadata, exif, orientation); MetadataLoader.mapImageDimensions(metadata, exif, orientation);
MetadataLoader.mapKeywords(metadata, exif); MetadataLoader.mapKeywords(metadata, exif);
MetadataLoader.mapTitle(metadata, exif);
MetadataLoader.mapCaption(metadata, exif);
MetadataLoader.mapTimestampAndOffset(metadata, exif); MetadataLoader.mapTimestampAndOffset(metadata, exif);
MetadataLoader.mapCameraData(metadata, exif); MetadataLoader.mapCameraData(metadata, exif);
MetadataLoader.mapGPS(metadata, exif); MetadataLoader.mapGPS(metadata, exif);
@ -370,6 +372,15 @@ export class MetadataLoader {
} }
} }
private static mapTitle(metadata: PhotoMetadata, exif: any) {
metadata.title = exif.dc?.title?.value || metadata.title || exif.photoshop?.Headline || exif.acdsee?.caption; //acdsee caption holds the title when data is saved by digikam. Used as last resort if iptc and dc do not contain the data
}
private static mapCaption(metadata: PhotoMetadata, exif: any) {
metadata.caption = exif.dc?.description?.value || metadata.caption || exif.ifd0?.ImageDescription || exif.exif?.UserComment?.value || exif.Iptc4xmpCore?.ExtDescrAccessibility?.value ||exif.acdsee?.notes;
}
private static mapTimestampAndOffset(metadata: PhotoMetadata, exif: any) { private static mapTimestampAndOffset(metadata: PhotoMetadata, exif: any) {
metadata.creationDate = Utils.timestampToMS(exif?.photoshop?.DateCreated, null) || metadata.creationDate = Utils.timestampToMS(exif?.photoshop?.DateCreated, null) ||
Utils.timestampToMS(exif?.xmp?.CreateDate, null) || Utils.timestampToMS(exif?.xmp?.CreateDate, null) ||

View File

@ -132,7 +132,7 @@ export class Utils {
//replace : with - in the yyyy-mm-dd part of the timestamp. //replace : with - in the yyyy-mm-dd part of the timestamp.
let formattedTimestamp = timestamp.substring(0,9).replaceAll(':', '-') + timestamp.substring(9,timestamp.length); let formattedTimestamp = timestamp.substring(0,9).replaceAll(':', '-') + timestamp.substring(9,timestamp.length);
if (formattedTimestamp.indexOf("Z") > 0) { //replace Z (and what comes after the Z) with offset if (formattedTimestamp.indexOf("Z") > 0) { //replace Z (and what comes after the Z) with offset
formattedTimestamp.substring(0, formattedTimestamp.indexOf("Z")) + (offset ? offset : '+00:00'); formattedTimestamp = formattedTimestamp.substring(0, formattedTimestamp.indexOf("Z")) + (offset ? offset : '+00:00');
} else if (formattedTimestamp.indexOf("+") > 0) { //don't do anything } else if (formattedTimestamp.indexOf("+") > 0) { //don't do anything
} else { //add offset } else { //add offset
formattedTimestamp = formattedTimestamp + (offset ? offset : '+00:00'); formattedTimestamp = formattedTimestamp + (offset ? offset : '+00:00');

View File

@ -0,0 +1,35 @@
{
"size": {
"width": 3144,
"height": 2288
},
"creationDate": -2195790002000,
"fileSize": 8909621,
"keywords": [],
"faces": [
{
"name": "Hulda Stein",
"box": {
"width": 645,
"height": 645,
"left": 1919,
"top": 547
}
},
{
"name": "John Amschler",
"box": {
"width": 709,
"height": 709,
"left": 544,
"top": 394
}
}
],
"cameraData": {
"make": "NIKON CORPORATION",
"model": "NIKON D200"
},
"caption": "Hulda and John's Wedding",
"title": "The Wedding"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,43 @@
{
"cameraData": {
"ISO": 200,
"exposure": 0.008,
"fStop": 2.8,
"focalLength": 9.4,
"make": "FUJIFILM",
"model": "FinePix F601 ZOOM"
},
"creationDate": 1126423382000,
"creationDateOffset": "+09:00",
"fileSize": 14134,
"size": {
"height": 5,
"width": 7
},
"title": "Digikam Title field",
"caption": "Digikam Caption field",
"faces": [
{
"box": {
"height": 2,
"left": 3,
"top": 2,
"width": 2
},
"name": "Æske Øllegård"
}
],
"keywords": [
"æÆøØåÅéÉüÜäÄöÖïÏñÑ"
],
"positionData": {
"GPSData": {
"latitude": 35.9524,
"longitude": 139.863355
},
"city": "Shimizu",
"country": "Japan",
"state": "Chiba Ken"
},
"rating": 4
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,33 @@
{
"size": {
"width": 10,
"height": 5
},
"caption": "Description of image",
"creationDate": 328817998000,
"faces": [
{
"box": {
"height": 1,
"left": 6,
"top": 2,
"width": 2
},
"name": "Person1"
},
{
"box": {
"height": 2,
"left": 2,
"top": 1,
"width": 2
},
"name": "Person2"
}
],
"fileSize": 1430,
"keywords": [
"Thing3"
],
"title": "The title"
}

View File

@ -0,0 +1,329 @@
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.0-c000 1.000000, 0000/00/00-00:00:00 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:aux="http://ns.adobe.com/exif/1.0/aux/"
xmlns:crs="http://ns.adobe.com/camera-raw-settings/1.0/"
xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/"
xmlns:xmpDM="http://ns.adobe.com/xmp/1.0/DynamicMedia/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"
xmlns:Iptc4xmpExt="http://iptc.org/std/Iptc4xmpExt/2008-02-29/"
xmlns:lr="http://ns.adobe.com/lightroom/1.0/"
xmlns:mwg-rs="http://www.metadataworkinggroup.com/schemas/regions/"
xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
xmlns:stArea="http://ns.adobe.com/xmp/sType/Area#"
xmp:ModifyDate="2024-03-22T19:09:41-05:00"
xmp:CreatorTool="Adobe Photoshop Lightroom 13.2 Classic (Windows)"
xmp:CreateDate="2007-07-29T18:19:58"
xmp:MetadataDate="2024-03-23T01:17:49-05:00"
aux:LensInfo="280/10 800/10 28/10 28/10"
aux:Lens="28.0-80.0 mm f/2.8"
aux:ImageNumber="4244"
crs:Version="3.7"
crs:RawFileName="flatxmp.png"
crs:WhiteBalance="Custom"
crs:Temperature="4150"
crs:Tint="+32"
crs:Exposure="-0.35"
crs:Shadows="32"
crs:Brightness="+50"
crs:Contrast="+58"
crs:Saturation="-24"
crs:Sharpness="25"
crs:LuminanceSmoothing="0"
crs:ColorNoiseReduction="25"
crs:ChromaticAberrationR="0"
crs:ChromaticAberrationB="0"
crs:VignetteAmount="0"
crs:ShadowTint="0"
crs:RedHue="0"
crs:RedSaturation="0"
crs:GreenHue="0"
crs:GreenSaturation="0"
crs:BlueHue="0"
crs:BlueSaturation="0"
crs:FillLight="0"
crs:Vibrance="0"
crs:HighlightRecovery="0"
crs:HueAdjustmentRed="0"
crs:HueAdjustmentOrange="0"
crs:HueAdjustmentYellow="0"
crs:HueAdjustmentGreen="0"
crs:HueAdjustmentAqua="0"
crs:HueAdjustmentBlue="0"
crs:HueAdjustmentPurple="0"
crs:HueAdjustmentMagenta="0"
crs:SaturationAdjustmentRed="0"
crs:SaturationAdjustmentOrange="0"
crs:SaturationAdjustmentYellow="0"
crs:SaturationAdjustmentGreen="0"
crs:SaturationAdjustmentAqua="0"
crs:SaturationAdjustmentBlue="0"
crs:SaturationAdjustmentPurple="0"
crs:SaturationAdjustmentMagenta="0"
crs:LuminanceAdjustmentRed="0"
crs:LuminanceAdjustmentOrange="0"
crs:LuminanceAdjustmentYellow="0"
crs:LuminanceAdjustmentGreen="0"
crs:LuminanceAdjustmentAqua="0"
crs:LuminanceAdjustmentBlue="0"
crs:LuminanceAdjustmentPurple="0"
crs:LuminanceAdjustmentMagenta="0"
crs:SplitToningShadowHue="0"
crs:SplitToningShadowSaturation="0"
crs:SplitToningHighlightHue="0"
crs:SplitToningHighlightSaturation="0"
crs:SplitToningBalance="0"
crs:ParametricShadows="0"
crs:ParametricDarks="0"
crs:ParametricLights="0"
crs:ParametricHighlights="0"
crs:ParametricShadowSplit="25"
crs:ParametricMidtoneSplit="50"
crs:ParametricHighlightSplit="75"
crs:ConvertToGrayscale="False"
crs:ToneCurveName="Medium Contrast"
crs:CameraProfile="ACR 3.3"
crs:HasSettings="True"
crs:HasCrop="False"
crs:AlreadyApplied="True"
photoshop:DateCreated="1980-06-02T18:19:58-06:00"
photoshop:AuthorsPosition="Upright"
photoshop:Headline="PhotoshopHeadline"
xmpMM:DocumentID="adobe:docid:photoshop:cafebabe-79a5-014d-8584-460dcfb4c5f7"
xmpMM:InstanceID="xmp.iid:cafebabe-5011-ca47-999e-b8a670bcd3f0"
xmpMM:OriginalDocumentID="uuid:E494197C283EDC11BDB3DC8D57BE7817"
xmpMM:PreservedFileName="flatxmpold.jpg"
dc:format="image/jpeg"
xmpRights:Marked="True"
xmpDM:pick="0"
tiff:Orientation="1"
tiff:Make="Cam Make"
tiff:Model="Cam Model"
exif:ExifVersion="0221"
exif:ColorSpace="1"
exif:DateTimeOriginal="1980-06-02T18:19:58"
exif:ExposureTime="1/8"
exif:FNumber="28/10"
exif:ExposureProgram="2"
exif:ShutterSpeedValue="3/1"
exif:ApertureValue="2970854/1000000"
exif:ExposureBiasValue="6/6"
exif:MaxApertureValue="30/10"
exif:MeteringMode="3"
exif:LightSource="0"
exif:FocalLength="280/10"
exif:SensingMethod="2"
exif:FileSource="3"
exif:SceneType="1"
exif:CustomRendered="0"
exif:ExposureMode="0"
exif:WhiteBalance="0"
exif:DigitalZoomRatio="1/1"
exif:FocalLengthIn35mmFilm="42"
exif:SceneCaptureType="0"
exif:GainControl="1"
exif:Contrast="0"
exif:Saturation="0"
exif:Sharpness="0"
exif:SubjectDistanceRange="0"
exif:SubSecTime="24"
exif:SubSecTimeOriginal="24"
exif:SubSecTimeDigitized="24">
<crs:ToneCurve>
<rdf:Seq>
<rdf:li>0, 0</rdf:li>
<rdf:li>32, 22</rdf:li>
<rdf:li>64, 56</rdf:li>
<rdf:li>128, 128</rdf:li>
<rdf:li>192, 196</rdf:li>
<rdf:li>255, 255</rdf:li>
</rdf:Seq>
</crs:ToneCurve>
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:cafebabe-09ec-c04f-8eb1-4c3b937c6767"
stRef:documentID="uuid:CAFEBABE283EDC11BDB3DC8D57BE7817"
stRef:originalDocumentID="uuid:CAFEBABE283EDC11BDB3DC8D57BE7817"/>
<xmpMM:History>
<rdf:Seq>
<rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:cafebabe-09ec-c04f-8eb1-4c3b937c6767"
stEvt:when="2012-08-01T13:47-05:00"
stEvt:softwareAgent="Adobe Photoshop 23.4 (Windows)"
stEvt:changed="/"/>
<rdf:li
stEvt:action="converted"
stEvt:parameters="from image/png to image/jpeg"/>
<rdf:li
stEvt:action="derived"
stEvt:parameters="converted from image/jpeg to image/png"/>
<rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:cafebabe-2209-e74b-a333-4e0bcc3908cf"
stEvt:when="2012-08-01T13:47-05:00"
stEvt:softwareAgent="Adobe Photoshop 23.4 (Windows)"
stEvt:changed="/"/>
<rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:cafebabe-8bb1-654f-8e02-98d4ff5353b0"
stEvt:when="2014-03-20T21:35-05:00"
stEvt:softwareAgent="Adobe Photoshop Lightroom Classic 13.2 (Windows)"
stEvt:changed="/metadata"/>
<rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:22b1a311-0788-b548-93b1-cbef983cab9a"
stEvt:when="2024-03-22T01:35:03-05:00"
stEvt:softwareAgent="Adobe Photoshop Lightroom Classic 13.2 (Windows)"
stEvt:changed="/metadata"/>
<rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:cafebabe-634f-d042-ac1f-1fa6e4a076bd"
stEvt:when="2014-03-22T19:09:41-05:00"
stEvt:softwareAgent="Adobe Photoshop 25.5 (Windows)"
stEvt:changed="/"/>
<rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:cafebabe-82ff-8845-ae3d-820fa91c7231"
stEvt:when="2014-03-22T19:09:41-05:00"
stEvt:softwareAgent="Adobe Photoshop 25.5 (Windows)"
stEvt:changed="/"/>
<rdf:li
stEvt:action="saved"
stEvt:instanceID="xmp.iid:cafebabe-5011-ca47-999e-b8a670bcd3f0"
stEvt:when="2014-03-23T01:17:49-05:00"
stEvt:softwareAgent="Adobe Photoshop Lightroom Classic 13.2 (Windows)"
stEvt:changed="/metadata"/>
</rdf:Seq>
</xmpMM:History>
<dc:creator>
<rdf:Seq>
<rdf:li>Digitized By Testmaster</rdf:li>
</rdf:Seq>
</dc:creator>
<dc:title>
<rdf:Alt>
<rdf:li xml:lang="x-default">The title</rdf:li>
</rdf:Alt>
</dc:title>
<dc:rights>
<rdf:Alt>
<rdf:li xml:lang="x-default">© Testmaster 2024</rdf:li>
</rdf:Alt>
</dc:rights>
<dc:subject>
<rdf:Bag>
<rdf:li>Person1</rdf:li>
<rdf:li>Person2</rdf:li>
<rdf:li>Thing3</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:description>
<rdf:Alt>
<rdf:li xml:lang="x-default">Description of image</rdf:li>
</rdf:Alt>
</dc:description>
<xmpRights:UsageTerms>
<rdf:Alt>
<rdf:li xml:lang="x-default">All Rights Reserved</rdf:li>
</rdf:Alt>
</xmpRights:UsageTerms>
<exif:UserComment>
<rdf:Alt>
<rdf:li xml:lang="x-default">User comment</rdf:li>
</rdf:Alt>
</exif:UserComment>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>400</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:Flash
exif:Fired="False"
exif:Return="0"
exif:Mode="0"
exif:Function="False"
exif:RedEyeMode="False"/>
<Iptc4xmpCore:CreatorContactInfo
Iptc4xmpCore:CiAdrPcode="6666"
Iptc4xmpCore:CiTelWork="+123456"
Iptc4xmpCore:CiAdrRegion="TestRegion"
Iptc4xmpCore:CiAdrCtry="TestCounty"
Iptc4xmpCore:CiAdrCity="TestCity"
Iptc4xmpCore:CiEmailWork="example@example.com"
Iptc4xmpCore:CiUrlWork="http://www.example.com"
Iptc4xmpCore:CiAdrExtadr="7357 Testroad"/>
<Iptc4xmpCore:AltTextAccessibility>
<rdf:Alt>
<rdf:li xml:lang="x-default">alt text</rdf:li>
</rdf:Alt>
</Iptc4xmpCore:AltTextAccessibility>
<Iptc4xmpCore:ExtDescrAccessibility>
<rdf:Alt>
<rdf:li xml:lang="x-default">extended description</rdf:li>
</rdf:Alt>
</Iptc4xmpCore:ExtDescrAccessibility>
<Iptc4xmpExt:PersonInImage>
<rdf:Bag>
<rdf:li>Person1</rdf:li>
<rdf:li>Person2</rdf:li>
</rdf:Bag>
</Iptc4xmpExt:PersonInImage>
<lr:weightedFlatSubject>
<rdf:Bag>
<rdf:li>Person1</rdf:li>
<rdf:li>Person2</rdf:li>
</rdf:Bag>
</lr:weightedFlatSubject>
<lr:hierarchicalSubject>
<rdf:Bag>
<rdf:li>Person1</rdf:li>
<rdf:li>Person2</rdf:li>
</rdf:Bag>
</lr:hierarchicalSubject>
<mwg-rs:Regions rdf:parseType="Resource">
<mwg-rs:AppliedToDimensions
stDim:w="3144"
stDim:h="2288"
stDim:unit="pixel"/>
<mwg-rs:RegionList>
<rdf:Bag>
<rdf:li>
<rdf:Description
mwg-rs:Rotation="0.00000"
mwg-rs:Name="Person1"
mwg-rs:Type="Face">
<mwg-rs:Area
stArea:h="0.28188"
stArea:w="0.20508"
stArea:x="0.71289"
stArea:y="0.37987"/>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description
mwg-rs:Rotation="0.00000"
mwg-rs:Name="Person2"
mwg-rs:Type="Face">
<mwg-rs:Area
stArea:h="0.31007"
stArea:w="0.22559"
stArea:x="0.28564"
stArea:y="0.32685"/>
</rdf:Description>
</rdf:li>
</rdf:Bag>
</mwg-rs:RegionList>
</mwg-rs:Regions>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="r"?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,12 @@
{
"size": {
"width": 10,
"height": 5
},
"creationDate": 1185683698000,
"creationDateOffset": "+13:45",
"fileSize": 1430,
"keywords": ["Person 1", "Person 2"],
"caption": "XMP description",
"title": "Photoshop Headline"
}

View File

@ -0,0 +1,210 @@
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.69'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<rdf:Description rdf:about=''
xmlns:Iptc4xmpCore='http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/'>
<Iptc4xmpCore:AltTextAccessibility>
<rdf:Alt>
<rdf:li xml:lang='x-default'>alt text</rdf:li>
</rdf:Alt>
</Iptc4xmpCore:AltTextAccessibility>
<Iptc4xmpCore:CreatorContactInfo rdf:parseType='Resource'>
<Iptc4xmpCore:CiAdrCity>Testville</Iptc4xmpCore:CiAdrCity>
<Iptc4xmpCore:CiAdrCtry>Testica</Iptc4xmpCore:CiAdrCtry>
<Iptc4xmpCore:CiAdrExtadr>Testroad 2</Iptc4xmpCore:CiAdrExtadr>
<Iptc4xmpCore:CiAdrPcode>7357</Iptc4xmpCore:CiAdrPcode>
<Iptc4xmpCore:CiAdrRegion>Testas</Iptc4xmpCore:CiAdrRegion>
<Iptc4xmpCore:CiEmailWork>test@example.com</Iptc4xmpCore:CiEmailWork>
</Iptc4xmpCore:CreatorContactInfo>
<Iptc4xmpCore:ExtDescrAccessibility>
<rdf:Alt>
<rdf:li xml:lang='x-default'>extended description</rdf:li>
</rdf:Alt>
</Iptc4xmpCore:ExtDescrAccessibility>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:aux='http://ns.adobe.com/exif/1.0/aux/'>
<aux:ImageNumber>4244</aux:ImageNumber>
<aux:Lens>28.0-80.0 mm f/2.8</aux:Lens>
<aux:LensInfo>28/1 80/1 14/5 14/5</aux:LensInfo>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:crs='http://ns.adobe.com/camera-raw-settings/1.0/'>
<crs:AlreadyApplied>True</crs:AlreadyApplied>
<crs:BlueHue>0</crs:BlueHue>
<crs:BlueSaturation>0</crs:BlueSaturation>
<crs:Brightness>+50</crs:Brightness>
<crs:CameraProfile>ACR 3.3</crs:CameraProfile>
<crs:ChromaticAberrationB>0</crs:ChromaticAberrationB>
<crs:ChromaticAberrationR>0</crs:ChromaticAberrationR>
<crs:ColorNoiseReduction>25</crs:ColorNoiseReduction>
<crs:Contrast>+58</crs:Contrast>
<crs:ConvertToGrayscale>False</crs:ConvertToGrayscale>
<crs:Exposure>-0.35</crs:Exposure>
<crs:FillLight>0</crs:FillLight>
<crs:GreenHue>0</crs:GreenHue>
<crs:GreenSaturation>0</crs:GreenSaturation>
<crs:HasCrop>False</crs:HasCrop>
<crs:HasSettings>True</crs:HasSettings>
<crs:HighlightRecovery>0</crs:HighlightRecovery>
<crs:HueAdjustmentAqua>0</crs:HueAdjustmentAqua>
<crs:HueAdjustmentBlue>0</crs:HueAdjustmentBlue>
<crs:HueAdjustmentGreen>0</crs:HueAdjustmentGreen>
<crs:HueAdjustmentMagenta>0</crs:HueAdjustmentMagenta>
<crs:HueAdjustmentOrange>0</crs:HueAdjustmentOrange>
<crs:HueAdjustmentPurple>0</crs:HueAdjustmentPurple>
<crs:HueAdjustmentRed>0</crs:HueAdjustmentRed>
<crs:HueAdjustmentYellow>0</crs:HueAdjustmentYellow>
<crs:LuminanceAdjustmentAqua>0</crs:LuminanceAdjustmentAqua>
<crs:LuminanceAdjustmentBlue>0</crs:LuminanceAdjustmentBlue>
<crs:LuminanceAdjustmentGreen>0</crs:LuminanceAdjustmentGreen>
<crs:LuminanceAdjustmentMagenta>0</crs:LuminanceAdjustmentMagenta>
<crs:LuminanceAdjustmentOrange>0</crs:LuminanceAdjustmentOrange>
<crs:LuminanceAdjustmentPurple>0</crs:LuminanceAdjustmentPurple>
<crs:LuminanceAdjustmentRed>0</crs:LuminanceAdjustmentRed>
<crs:LuminanceAdjustmentYellow>0</crs:LuminanceAdjustmentYellow>
<crs:LuminanceSmoothing>0</crs:LuminanceSmoothing>
<crs:ParametricDarks>0</crs:ParametricDarks>
<crs:ParametricHighlightSplit>75</crs:ParametricHighlightSplit>
<crs:ParametricHighlights>0</crs:ParametricHighlights>
<crs:ParametricLights>0</crs:ParametricLights>
<crs:ParametricMidtoneSplit>50</crs:ParametricMidtoneSplit>
<crs:ParametricShadowSplit>25</crs:ParametricShadowSplit>
<crs:ParametricShadows>0</crs:ParametricShadows>
<crs:RawFileName>family-220.png</crs:RawFileName>
<crs:RedHue>0</crs:RedHue>
<crs:RedSaturation>0</crs:RedSaturation>
<crs:Saturation>-24</crs:Saturation>
<crs:SaturationAdjustmentAqua>0</crs:SaturationAdjustmentAqua>
<crs:SaturationAdjustmentBlue>0</crs:SaturationAdjustmentBlue>
<crs:SaturationAdjustmentGreen>0</crs:SaturationAdjustmentGreen>
<crs:SaturationAdjustmentMagenta>0</crs:SaturationAdjustmentMagenta>
<crs:SaturationAdjustmentOrange>0</crs:SaturationAdjustmentOrange>
<crs:SaturationAdjustmentPurple>0</crs:SaturationAdjustmentPurple>
<crs:SaturationAdjustmentRed>0</crs:SaturationAdjustmentRed>
<crs:SaturationAdjustmentYellow>0</crs:SaturationAdjustmentYellow>
<crs:ShadowTint>0</crs:ShadowTint>
<crs:Shadows>32</crs:Shadows>
<crs:Sharpness>25</crs:Sharpness>
<crs:SplitToningBalance>0</crs:SplitToningBalance>
<crs:SplitToningHighlightHue>0</crs:SplitToningHighlightHue>
<crs:SplitToningHighlightSaturation>0</crs:SplitToningHighlightSaturation>
<crs:SplitToningShadowHue>0</crs:SplitToningShadowHue>
<crs:SplitToningShadowSaturation>0</crs:SplitToningShadowSaturation>
<crs:Temperature>4150</crs:Temperature>
<crs:Tint>+32</crs:Tint>
<crs:ToneCurve>
<rdf:Seq>
<rdf:li>0, 0</rdf:li>
<rdf:li>32, 22</rdf:li>
<rdf:li>64, 56</rdf:li>
<rdf:li>128, 128</rdf:li>
<rdf:li>192, 196</rdf:li>
<rdf:li>255, 255</rdf:li>
</rdf:Seq>
</crs:ToneCurve>
<crs:ToneCurveName>Medium Contrast</crs:ToneCurveName>
<crs:Version>3.7</crs:Version>
<crs:Vibrance>0</crs:Vibrance>
<crs:VignetteAmount>0</crs:VignetteAmount>
<crs:WhiteBalance>Custom</crs:WhiteBalance>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:dc='http://purl.org/dc/elements/1.1/'>
<dc:creator>
<rdf:Seq>
<rdf:li>XMP Creator</rdf:li>
</rdf:Seq>
</dc:creator>
<dc:description>
<rdf:Alt>
<rdf:li xml:lang='x-default'>XMP description</rdf:li>
</rdf:Alt>
</dc:description>
<dc:format>image/png</dc:format>
<dc:rights>
<rdf:Alt>
<rdf:li xml:lang='x-default'>XMP Creator</rdf:li>
</rdf:Alt>
</dc:rights>
<dc:subject>
<rdf:Bag>
<rdf:li>Person 1</rdf:li>
<rdf:li>Person 2</rdf:li>
</rdf:Bag>
</dc:subject>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:exif='http://ns.adobe.com/exif/1.0/'>
<exif:ApertureValue>24361/8200</exif:ApertureValue>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:Contrast>0</exif:Contrast>
<exif:CustomRendered>0</exif:CustomRendered>
<exif:DateTimeOriginal>2007-07-29T18:19:58+13:45</exif:DateTimeOriginal>
<exif:DigitalZoomRatio>1/1</exif:DigitalZoomRatio>
<exif:ExifVersion>0221</exif:ExifVersion>
<exif:ExposureBiasValue>1/1</exif:ExposureBiasValue>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:ExposureProgram>2</exif:ExposureProgram>
<exif:ExposureTime>1/8</exif:ExposureTime>
<exif:FNumber>14/5</exif:FNumber>
<exif:FileSource>3</exif:FileSource>
<exif:Flash rdf:parseType='Resource'>
<exif:Fired>False</exif:Fired>
<exif:Function>False</exif:Function>
<exif:Mode>0</exif:Mode>
<exif:RedEyeMode>False</exif:RedEyeMode>
<exif:Return>0</exif:Return>
</exif:Flash>
<exif:FocalLength>28/1</exif:FocalLength>
<exif:FocalLengthIn35mmFilm>42</exif:FocalLengthIn35mmFilm>
<exif:GainControl>1</exif:GainControl>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>400</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:LightSource>0</exif:LightSource>
<exif:MaxApertureValue>24361/8200</exif:MaxApertureValue>
<exif:MeteringMode>3</exif:MeteringMode>
<exif:Saturation>0</exif:Saturation>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:SceneType>1</exif:SceneType>
<exif:SensingMethod>2</exif:SensingMethod>
<exif:Sharpness>0</exif:Sharpness>
<exif:ShutterSpeedValue>3/1</exif:ShutterSpeedValue>
<exif:SubjectDistanceRange>0</exif:SubjectDistanceRange>
<exif:WhiteBalance>0</exif:WhiteBalance>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:photoshop='http://ns.adobe.com/photoshop/1.0/'>
<photoshop:AuthorsPosition>Archivalist</photoshop:AuthorsPosition>
<photoshop:DateCreated>1980-06-02T18:19:58</photoshop:DateCreated>
<photoshop:Headline>Photoshop Headline</photoshop:Headline>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
<tiff:Make>CamMake</tiff:Make>
<tiff:Model>CamModel</tiff:Model>
<tiff:Orientation>1</tiff:Orientation>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
<xmp:CreateDate>2007-07-29T18:19:58+13:45</xmp:CreateDate>
<xmp:CreatorTool>Adobe Photoshop Lightroom 13.2 Classic (Windows)</xmp:CreatorTool>
<xmp:MetadataDate>2014-03-23T01:17:49-05:00</xmp:MetadataDate>
<xmp:ModifyDate>2014-03-22T19:09:41-05:00</xmp:ModifyDate>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='w'?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -0,0 +1,54 @@
{
"cameraData": {
"ISO": 3200,
"exposure": 0.00125,
"fStop": 5.6,
"focalLength": 85,
"lens": "EF-S15-85mm f/3.5-5.6 IS USM",
"make": "Canon",
"model": "óüöúőűáé ÓÜÖÚŐŰÁÉ"
},
"caption": "Test caption",
"creationDate": 1434018566690,
"faces": [
{
"box": {
"height": 2,
"width": 2,
"left": 7,
"top": 3
},
"name": "squirrel"
},
{
"box": {
"height": 3,
"width": 2,
"left": 4,
"top": 4
},
"name": "special_chars űáéúőóüío?._:"
}
],
"fileSize": 39424,
"keywords": [
"Berkley",
"USA",
"űáéúőóüö ŰÁÉÚŐÓÜÖ"
],
"positionData": {
"GPSData": {
"latitude": 37.871093,
"longitude": -122.25678
},
"city": "test city őúéáűóöí-.,)(=",
"country": "test country őúéáűóöí-.,)(=/%!+\"'",
"state": "test state őúéáűóöí-.,)("
},
"rating": 3,
"size": {
"height": 10,
"width": 14
},
"title": "Test caption"
}

View File

@ -0,0 +1,86 @@
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c140 79.160451, 2017/05/06-01:08:21 ">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="" xmlns:GPano="http://ns.google.com/photos/1.0/panorama/" xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/" xmlns:aux="http://ns.adobe.com/exif/1.0/aux/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/" xmlns:crs="http://ns.adobe.com/camera-raw-settings/1.0/" xmlns:MicrosoftPhoto="http://ns.microsoft.com/photo/1.0/" xmlns:mwg-rs="http://www.metadataworkinggroup.com/schemas/regions/" xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#" xmlns:stArea="http://ns.adobe.com/xmp/sType/Area#" xmlns:lr="http://ns.adobe.com/lightroom/1.0/" GPano:FirstPhotoDate="2017-08-16" Iptc4xmpCore:CountryCode="US" Iptc4xmpCore:Location="Sublocation test" aux:ApproximateFocusDistance="213/100" aux:Firmware="1.0.2" aux:FlashCompensation="0/1" aux:ImageNumber="0" aux:Lens="EF-S15-85mm f/3.5-5.6 IS USM" aux:LensID="488" aux:LensInfo="15/1 85/1 0/0 0/0" aux:LensSerialNumber="0000129324" aux:SerialNumber="123063022888" dc:format="image/jpeg" photoshop:City="test city őúéáűóöí-.,)(=/%!+&quot;'" photoshop:Country="test country őúéáűóöí-.,)(=/%!+&quot;'" photoshop:DateCreated="2015-06-11T10:29:26.69" photoshop:State="test state őúéáűóöí-.,)(=/%!+&quot;'" xmp:CreateDate="2015-06-11T10:29:26.69" xmp:CreatorTool="Adobe Photoshop Lightroom 6.1 (Windows)" xmp:MetadataDate="2019-01-20T12:25:05+01:00" xmp:ModifyDate="2015-07-24T22:45:50+02:00" xmp:Rating="3" xmp:Label="Red" xmpMM:DocumentID="xmp.did:bbbfe6e4-c352-5441-a4c0-d1a95da2ac63" xmpMM:InstanceID="xmp.iid:ee16b4b0-7678-0c44-a2a0-f44a441a642c" xmpMM:OriginalDocumentID="B6C3AD6C2A4882C8DBC687A5511B328D" xmpRights:Marked="True" crs:CropTop="0" crs:CropLeft="0.140541" crs:CropBottom="0.859459" crs:CropRight="1" crs:CropAngle="0" crs:CropConstrainToWarp="0" crs:HasCrop="True" crs:AlreadyApplied="False" crs:RawFileName="test image öüóőúéáű-.,.jpg">
<dc:creator>
<rdf:Seq>
<rdf:li>Patrik</rdf:li>
</rdf:Seq>
</dc:creator>
<dc:title>
<rdf:Alt>
<rdf:li xml:lang="x-default">Test caption</rdf:li>
</rdf:Alt>
</dc:title>
<dc:rights>
<rdf:Alt>
<rdf:li xml:lang="x-default">Copyright test</rdf:li>
</rdf:Alt>
</dc:rights>
<dc:subject>
<rdf:Bag>
<rdf:li>Berkley</rdf:li>
<rdf:li>USA</rdf:li>
<rdf:li>special_chars űáéúőóüío?._:</rdf:li>
<rdf:li>squirrel</rdf:li>
<rdf:li>űáéúőóüö ŰÁÉÚŐÓÜÖ</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:description>
<rdf:Alt>
<rdf:li xml:lang="x-default">Test caption</rdf:li>
</rdf:Alt>
</dc:description>
<xmpMM:DerivedFrom stRef:documentID="B6C3AD6C2A4882C8DBC687A5511B328D" stRef:originalDocumentID="B6C3AD6C2A4882C8DBC687A5511B328D"/>
<xmpMM:History>
<rdf:Seq>
<rdf:li stEvt:action="derived" stEvt:parameters="converted from image/x-canon-cr2 to image/jpeg, saved to new location"/>
<rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:bbbfe6e4-c352-5441-a4c0-d1a95da2ac63" stEvt:softwareAgent="Adobe Photoshop Lightroom 6.1 (Windows)" stEvt:when="2015-07-24T22:45:50+02:00"/>
<rdf:li stEvt:action="saved" stEvt:changed="/metadata" stEvt:instanceID="xmp.iid:2ae29592-26ec-d344-ac38-bdbca6a40891" stEvt:softwareAgent="Adobe Photoshop Lightroom 6.1 (Windows)" stEvt:when="2015-07-24T22:45:51+02:00"/>
<rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:ee16b4b0-7678-0c44-a2a0-f44a441a642c" stEvt:when="2019-01-20T12:25:05+01:00" stEvt:softwareAgent="Adobe Photoshop Lightroom Classic 8.0 (Windows)" stEvt:changed="/metadata"/>
</rdf:Seq>
</xmpMM:History>
<MicrosoftPhoto:LastKeywordXMP>
<rdf:Bag>
<rdf:li>Berkley</rdf:li>
<rdf:li>USA</rdf:li>
<rdf:li>űáéúőóüö ŰÁÉÚŐÓÜÖ</rdf:li>
</rdf:Bag>
</MicrosoftPhoto:LastKeywordXMP>
<MicrosoftPhoto:LastKeywordIPTC>
<rdf:Bag>
<rdf:li>Berkley</rdf:li>
<rdf:li>USA</rdf:li>
<rdf:li>űáéúőóüö ŰÁÉÚŐÓÜÖ</rdf:li>
</rdf:Bag>
</MicrosoftPhoto:LastKeywordIPTC>
<mwg-rs:Regions rdf:parseType="Resource">
<mwg-rs:AppliedToDimensions stDim:w="12" stDim:h="9" stDim:unit="pixel"/>
<mwg-rs:RegionList>
<rdf:Bag>
<rdf:li>
<rdf:Description mwg-rs:Rotation="0.00000" mwg-rs:Name="squirrel" mwg-rs:Type="Face">
<mwg-rs:Area stArea:h="0.20270" stArea:w="0.14632" stArea:x="0.58573" stArea:y="0.41081"/>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description mwg-rs:Rotation="0.00000" mwg-rs:Name="special_chars űáéúőóüío?._:" mwg-rs:Type="Face">
<mwg-rs:Area stArea:h="0.25405" stArea:w="0.16377" stArea:x="0.33991" stArea:y="0.48467"/>
</rdf:Description>
</rdf:li>
</rdf:Bag>
</mwg-rs:RegionList>
</mwg-rs:Regions>
<lr:hierarchicalSubject>
<rdf:Bag>
<rdf:li>Berkley</rdf:li>
<rdf:li>USA</rdf:li>
<rdf:li>special_chars űáéúőóüío?._:</rdf:li>
<rdf:li>squirrel</rdf:li>
<rdf:li>űáéúőóüö ŰÁÉÚŐÓÜÖ</rdf:li>
</rdf:Bag>
</lr:hierarchicalSubject>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta> <?xpacket end="w"?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -0,0 +1,56 @@
{
"cameraData": {
"ISO": 3200,
"exposure": 0.00125,
"fStop": 5.6,
"focalLength": 85,
"lens": "EF-S15-85mm f/3.5-5.6 IS USM",
"make": "Canon",
"model": "óüöúőűáé ÓÜÖÚŐŰÁÉ"
},
"caption": "Test caption",
"creationDate": 1434018566000,
"faces": [
{
"box": {
"height": 2,
"width": 2,
"left": 7,
"top": 3
},
"name": "squirrel"
},
{
"box": {
"height": 3,
"width": 2,
"left": 4,
"top": 4
},
"name": "special_chars űáéúőóüío?._:"
}
],
"fileSize": 39424,
"keywords": [
"Berkley",
"USA",
"űáéúőóüö ŰÁÉÚŐÓÜÖ",
"special_chars űáéúőóüío?._:",
"squirrel"
],
"positionData": {
"GPSData": {
"latitude": 37.871093,
"longitude": -122.25678
},
"city": "test city őúéáűóöí-.,)(=",
"country": "test country őúéáűóöí-.,)(=/%!+\"'",
"state": "test state őúéáűóöí-.,)("
},
"rating": 3,
"size": {
"height": 10,
"width": 14
},
"title": "Test caption"
}

View File

@ -0,0 +1,139 @@
<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.69'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<rdf:Description rdf:about=''
xmlns:Iptc4xmpCore='http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/'>
<Iptc4xmpCore:CountryCode>US</Iptc4xmpCore:CountryCode>
<Iptc4xmpCore:Location>Sublocation test</Iptc4xmpCore:Location>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:dc='http://purl.org/dc/elements/1.1/'>
<dc:creator>
<rdf:Seq>
<rdf:li>Patrik</rdf:li>
</rdf:Seq>
</dc:creator>
<dc:description>
<rdf:Alt>
<rdf:li xml:lang='x-default'>Test caption</rdf:li>
</rdf:Alt>
</dc:description>
<dc:rights>
<rdf:Alt>
<rdf:li xml:lang='x-default'>Copyright test</rdf:li>
</rdf:Alt>
</dc:rights>
<dc:subject>
<rdf:Bag>
<rdf:li>Berkley</rdf:li>
<rdf:li>USA</rdf:li>
<rdf:li>special_chars űáéúőóüío?._:</rdf:li>
<rdf:li>squirrel</rdf:li>
<rdf:li>űáéúőóüö ŰÁÉÚŐÓÜÖ</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:title>
<rdf:Alt>
<rdf:li xml:lang='x-default'>Test caption</rdf:li>
</rdf:Alt>
</dc:title>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:exif='http://ns.adobe.com/exif/1.0/'>
<exif:ApertureValue>40761/8200</exif:ApertureValue>
<exif:ColorSpace>1</exif:ColorSpace>
<exif:CustomRendered>0</exif:CustomRendered>
<exif:DateTimeOriginal>2015-06-11T10:29:26</exif:DateTimeOriginal>
<exif:ExifVersion>0230</exif:ExifVersion>
<exif:ExposureBiasValue>0/1</exif:ExposureBiasValue>
<exif:ExposureMode>0</exif:ExposureMode>
<exif:ExposureProgram>6</exif:ExposureProgram>
<exif:ExposureTime>1/800</exif:ExposureTime>
<exif:FNumber>28/5</exif:FNumber>
<exif:Flash rdf:parseType='Resource'>
<exif:Fired>False</exif:Fired>
<exif:Function>False</exif:Function>
<exif:Mode>2</exif:Mode>
<exif:RedEyeMode>False</exif:RedEyeMode>
<exif:Return>0</exif:Return>
</exif:Flash>
<exif:FocalLength>85/1</exif:FocalLength>
<exif:FocalPlaneResolutionUnit>2</exif:FocalPlaneResolutionUnit>
<exif:FocalPlaneXResolution>1036800/181</exif:FocalPlaneXResolution>
<exif:FocalPlaneYResolution>691200/119</exif:FocalPlaneYResolution>
<exif:GPSAltitude>90/1</exif:GPSAltitude>
<exif:GPSLatitude>37,52.2656N</exif:GPSLatitude>
<exif:GPSLongitude>122,15.4068W</exif:GPSLongitude>
<exif:GPSVersionID>2.2.0.0</exif:GPSVersionID>
<exif:ISOSpeedRatings>
<rdf:Seq>
<rdf:li>3200</rdf:li>
</rdf:Seq>
</exif:ISOSpeedRatings>
<exif:MaxApertureValue>18325/3649</exif:MaxApertureValue>
<exif:MeteringMode>5</exif:MeteringMode>
<exif:SceneCaptureType>0</exif:SceneCaptureType>
<exif:ShutterSpeedValue>19307/2002</exif:ShutterSpeedValue>
<exif:WhiteBalance>0</exif:WhiteBalance>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:exifEX='http://cipa.jp/exif/1.0/'>
<exifEX:BodySerialNumber>123063022888</exifEX:BodySerialNumber>
<exifEX:LensModel>EF-S15-85mm f/3.5-5.6 IS USM</exifEX:LensModel>
<exifEX:LensSerialNumber>0000129324</exifEX:LensSerialNumber>
<exifEX:LensSpecification>
<rdf:Seq>
<rdf:li>15/1</rdf:li>
<rdf:li>85/1</rdf:li>
<rdf:li>0/0</rdf:li>
<rdf:li>0/0</rdf:li>
</rdf:Seq>
</exifEX:LensSpecification>
<exifEX:RecommendedExposureIndex>3200</exifEX:RecommendedExposureIndex>
<exifEX:SensitivityType>2</exifEX:SensitivityType>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:photoshop='http://ns.adobe.com/photoshop/1.0/'>
<photoshop:City>test city őúéáűóöí-.,)(=</photoshop:City>
<photoshop:Country>test country őúéáűóöí-.,)(=/%!+&quot;&#39;</photoshop:Country>
<photoshop:DateCreated>2015-06-11T10:29:26</photoshop:DateCreated>
<photoshop:State>test state őúéáűóöí-.,)(</photoshop:State>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
<tiff:Artist>Patrik</tiff:Artist>
<tiff:Compression>6</tiff:Compression>
<tiff:Copyright>
<rdf:Alt>
<rdf:li xml:lang='x-default'>Copyright test</rdf:li>
</rdf:Alt>
</tiff:Copyright>
<tiff:ImageDescription>
<rdf:Alt>
<rdf:li xml:lang='x-default'>Test caption</rdf:li>
</rdf:Alt>
</tiff:ImageDescription>
<tiff:Make>Canon</tiff:Make>
<tiff:Model>óüöúőűáé ÓÜÖÚŐŰÁÉ</tiff:Model>
<tiff:Orientation>1</tiff:Orientation>
<tiff:ResolutionUnit>3</tiff:ResolutionUnit>
<tiff:Software>Adobe Photoshop Lightroom 6.1 (Windows)</tiff:Software>
<tiff:XResolution>94/1</tiff:XResolution>
<tiff:YResolution>94/1</tiff:YResolution>
</rdf:Description>
<rdf:Description rdf:about=''
xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
<xmp:CreateDate>2015-06-11T10:29:26</xmp:CreateDate>
<xmp:CreatorTool>Adobe Photoshop Lightroom 6.1 (Windows)</xmp:CreatorTool>
<xmp:ModifyDate>2015-07-24T22:45:50</xmp:ModifyDate>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end='w'?>

View File

@ -24,7 +24,7 @@ describe('DiskMangerWorker', () => {
ProjectPath.ImageFolder = path.join(__dirname, '/../../../assets'); ProjectPath.ImageFolder = path.join(__dirname, '/../../../assets');
const dir = await DiskManager.scanDirectory('/'); const dir = await DiskManager.scanDirectory('/');
// should match the number of media (photo/video) files in the assets folder // should match the number of media (photo/video) files in the assets folder
expect(dir.media.length).to.be.equals(15); expect(dir.media.length).to.be.equals(17);
// eslint-disable-next-line @typescript-eslint/no-var-requires // eslint-disable-next-line @typescript-eslint/no-var-requires
const expected = require(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.json')); const expected = require(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.json'));
const i = dir.media.findIndex(m => m.name === 'test image öüóőúéáű-.,.jpg'); const i = dir.media.findIndex(m => m.name === 'test image öüóőúéáű-.,.jpg');

View File

@ -35,6 +35,12 @@ describe('MetadataLoader', () => {
expect(Utils.clone(data)).to.be.deep.equal(expected); expect(Utils.clone(data)).to.be.deep.equal(expected);
}); });
it('should load png with description', async () => {
const data = await MetadataLoader.loadPhotoMetadata(path.join(__dirname, '/../../../assets/description.png'));
const expected = require(path.join(__dirname, '/../../../assets/description.json'));
expect(Utils.clone(data)).to.be.deep.equal(expected);
});
it('should load jpg', async () => { it('should load jpg', async () => {
const data = await MetadataLoader.loadPhotoMetadata(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.jpg')); const data = await MetadataLoader.loadPhotoMetadata(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.jpg'));
const expected = require(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.json')); const expected = require(path.join(__dirname, '/../../../assets/test image öüóőúéáű-.,.json'));
@ -179,6 +185,11 @@ describe('MetadataLoader', () => {
const expected = require(path.join(__dirname, '/../../../assets/wild-1-small.json')); const expected = require(path.join(__dirname, '/../../../assets/wild-1-small.json'));
expect(Utils.clone(data)).to.be.deep.equal(expected); expect(Utils.clone(data)).to.be.deep.equal(expected);
}); });
it('should load image with metadata saved by digikam', async () => {
const data = await MetadataLoader.loadPhotoMetadata(path.join(__dirname, '/../../../assets/digikam.jpg'));
const expected = require(path.join(__dirname, '/../../../assets/digikam.json'));
expect(Utils.clone(data)).to.be.deep.equal(expected);
});
describe('should load jpg with edge case exif data', () => { describe('should load jpg with edge case exif data', () => {
const root = path.join(__dirname, '/../../../assets/edge_case_exif_data'); const root = path.join(__dirname, '/../../../assets/edge_case_exif_data');