diff options
author | Marcin Zelent <marcin@zelent.net> | 2022-12-21 23:39:38 +0100 |
---|---|---|
committer | Marcin Zelent <marcin@zelent.net> | 2022-12-21 23:39:38 +0100 |
commit | a7bcdf5243ef3d64c64c771c96130611e571d97e (patch) | |
tree | b0d445326d2f22a192fc00d25e0ba47c89cea991 | |
parent | 68a7c103b72910ac904cbf72afaffcfe56af1e4f (diff) |
-rw-r--r-- | src/generate-data.ts | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/generate-data.ts b/src/generate-data.ts index a67c620..3d04bfb 100644 --- a/src/generate-data.ts +++ b/src/generate-data.ts @@ -93,6 +93,26 @@ function convertCoordinate(coordinate: number[], coordinateRef: string): number }
}
+function decodeExifUserComment(buffer: Buffer): string {
+ const encoding = buffer.toString('ascii', 0, 7);
+
+ let index = 8;
+ for (let i = index; i < buffer.length; i++) {
+ if (buffer[i] !== 0) {
+ index = i;
+ break;
+ }
+ }
+
+ if (encoding === 'ASCII\0\0') {
+ return buffer.toString('utf8', index);
+ } else if (encoding === 'UNICODE') {
+ return buffer.toString('utf16le', index);
+ } else {
+ return buffer.toString();
+ }
+}
+
async function checkIfFileExists(filepath: string): Promise<boolean> {
try {
await access(filepath, fsConstants.F_OK);
@@ -232,7 +252,7 @@ async function getPhotos( longitude,
time: exifData.exif?.DateTimeOriginal,
thumbnail: `${serverPath}/${relativePath}/thumb-${file.name}`,
- caption: exifData.image?.ImageDescription,
+ caption: decodeExifUserComment(exifData.exif?.UserComment),
});
} catch (err) {
console.error(`Could not process the file ${inputFile}.`);
|