Pick up location from C2PA or Exif

This commit is contained in:
N-Pex 2025-11-03 15:27:42 +01:00
parent d6c8146096
commit 64b14cef40
2 changed files with 197 additions and 113 deletions

View file

@ -88,43 +88,18 @@ const updateDetails = () => {
});
}
const exif = props.proof?.integrity?.exif;
if (exif) {
const getSimpleValue = (key: string): string | undefined => {
return exif ? (exif[key] as string)?.replace(/^"(.+(?="$))"$/, "$1") : undefined;
};
const toDegrees = (dms: string | undefined, direction: string) => {
if (!dms || dms.length == 0) return undefined;
var parts = dms.split(/deg|min|sec/);
var d = parts[0];
var m = parts[1];
var s = parts[2];
var deg = (Number(d) + Number(m) / 60 + Number(s) / 3600).toFixed(6);
if (direction == "S" || direction == "W") {
deg = "-" + deg;
}
return deg;
};
// Location
try {
const lat = toDegrees(getSimpleValue("GPSLatitude"), getSimpleValue("GPSLatitudeRef") ?? "");
const lon = toDegrees(getSimpleValue("GPSLongitude"), getSimpleValue("GPSLongitudeRef") ?? "");
if (lat && lon && lat.length > 0 && lon.length > 0) {
const location = lat + " " + lon;
const link =
"https://www.google.com/maps/search/?api=1&query=" + encodeURIComponent(lat) + "," + encodeURIComponent(lon);
d.push({
icon: "$vuetify.icons.ic_exif_location",
title: t("file_mode.cc_location"),
value: location,
link: link,
});
}
} catch (error) { }
if (props.metadata?.location) {
const lat = props.metadata.location.latitude;
const lon = props.metadata.location.longitude;
const location = lat + " " + lon;
const link = "https://www.google.com/maps/search/?api=1&query=" + encodeURIComponent(lat) + "," + encodeURIComponent(lon);
d.push({
icon: "$vuetify.icons.ic_exif_location",
title: t("file_mode.cc_location"),
value: location,
link: link,
});
}
details.value = d;
};