feat: add exif data to image tags
Some checks failed
Deploy to SFTP Server / build (push) Failing after 2m10s
Some checks failed
Deploy to SFTP Server / build (push) Failing after 2m10s
This commit is contained in:
@ -1,22 +1,12 @@
|
||||
let loadingSharp = false;
|
||||
import { rgbaToThumbHash } from "thumbhash";
|
||||
import ExifReader from 'exifreader';
|
||||
import type { ImageMetadata } from "astro";
|
||||
|
||||
let s: typeof import("sharp") | undefined;
|
||||
|
||||
async function getSharp(): Promise<typeof import("sharp") | undefined> {
|
||||
|
||||
if (s) return s;
|
||||
s = (await import("sharp")).default;
|
||||
return s;
|
||||
|
||||
if (!loadingSharp) {
|
||||
loadingSharp = true;
|
||||
setTimeout(async () => {
|
||||
s = (await import("sharp")).default;
|
||||
}, 1000);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
export async function generateThumbHash(image: { width: number, height: number }) {
|
||||
@ -54,10 +44,10 @@ const allowedExif = [
|
||||
"IsoSpeedRatings",
|
||||
];
|
||||
|
||||
export async function getExifData(image: { fsPath: string }) {
|
||||
export async function getExifData(image: ImageMetadata) {
|
||||
const sharp = await getSharp();
|
||||
if (!sharp) return;
|
||||
const tags = await ExifReader.load(image.fsPath, { async: true });
|
||||
const tags = await ExifReader.load((image as ImageMetadata & { fsPath: string }).fsPath, { async: true });
|
||||
|
||||
const out: Record<string, any> = {};
|
||||
let hasExif = false;
|
||||
|
Reference in New Issue
Block a user