This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
const iso = (d: string | Date) => {
|
||||
if(!d) return ""
|
||||
const v = toDate(d);
|
||||
if(!v) return ""
|
||||
return isNaN(v.getTime()) ? "" : v.toISOString();
|
||||
};
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ Unsortierte Bilder aus unserer Wanderung durch die Picos de Europa.
|
||||
|
||||
import Image from "@components/Image.astro";
|
||||
import ImageGallery from "@components/ImageGallery.svelte"
|
||||
import ImageSlider from "@components/ImageSlider.svelte"
|
||||
|
||||
<ImageGallery client:load/>
|
||||
|
||||
@@ -24,9 +25,11 @@ import image1 from "images/20250527_125228.jpg"
|
||||
import image16 from "images/PXL_20250527_101057540.MP.jpg"
|
||||
import image17 from "images/PXL_20250527_100728883.jpg"
|
||||
|
||||
<Image alt="" src={image1} alt="Bild einer Kuh auf einer Wiese vor dem Meer"/>
|
||||
<Image alt="" src={image17} alt="Person auf flysch gestein vor einer Höhle am Meer"/>
|
||||
<Image alt="" src={image16} alt="Bild von Person in einer Höhle aus der man das Meer sieht"/>
|
||||
<ImageSlider title="Wanderung" client:load>
|
||||
<Image src={image1} alt="Bild einer Kuh auf einer Wiese vor dem Meer"/>
|
||||
<Image src={image17} alt="Person auf flysch gestein vor einer Höhle am Meer"/>
|
||||
<Image src={image16} alt="Bild von Person in einer Höhle aus der man das Meer sieht"/>
|
||||
</ImageSlider>
|
||||
|
||||
## 28. May
|
||||
|
||||
@@ -35,8 +38,10 @@ Erster Wandertag
|
||||
import image15 from "images/PXL_20250528_121633744.MP.jpg"
|
||||
import image19 from "images/20250528_164715.jpg"
|
||||
|
||||
<Image alt="" src={image15} alt="15"/>
|
||||
<Image alt="" src={image19} alt="19"/>
|
||||
<ImageSlider title="Wanderung" client:load>
|
||||
<Image src={image15} alt="Wir nach den ersten 300 Metern"/>
|
||||
<Image src={image19} alt="Viele Bergziegen die gerne das Salz von der Haut lecken"/>
|
||||
</ImageSlider>
|
||||
|
||||
## 29. May
|
||||
|
||||
@@ -47,8 +52,7 @@ import image12 from "images/PXL_20250530_082919731.jpg"
|
||||
import image13 from "images/PXL_20250529_201559403.jpg"
|
||||
|
||||
<video src={videoUrl1} controls alt=""/>
|
||||
<Image alt="" src={image12} alt="12"/>
|
||||
<Image alt="" src={image13} alt="13"/>
|
||||
<Image alt="" src={image12} alt="Endlich am Refugio angekommen"/>
|
||||
|
||||
## 30-31. May
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { rgbaToThumbHash } from "thumbhash";
|
||||
import ExifReader from "exifreader";
|
||||
import type { ImageMetadata } from "astro";
|
||||
import { readFile } from "node:fs/promises";
|
||||
import sharp from "sharp";
|
||||
|
||||
export async function generateThumbHash(
|
||||
@@ -72,23 +73,26 @@ const allowedExif = [
|
||||
];
|
||||
|
||||
export async function getExifData(image: ImageMetadata) {
|
||||
if (image.format === "svg") return undefined; // SVGs don't have EXIF data")
|
||||
if (image.format === "svg") return undefined; // SVGs don't have EXIF data
|
||||
const imagePath = (image as ImageMetadata & { fsPath: string }).fsPath ??
|
||||
image.src;
|
||||
|
||||
if (!imagePath) return undefined;
|
||||
|
||||
try {
|
||||
let buffer: ArrayBuffer;
|
||||
let buffer: ArrayBufferLike;
|
||||
if (imagePath.startsWith("https://") || imagePath.startsWith("http://")) {
|
||||
const res = await fetch(imagePath);
|
||||
buffer = await res.arrayBuffer();
|
||||
} else {
|
||||
buffer = await sharp(imagePath).toBuffer() as unknown as ArrayBuffer;
|
||||
const b = await readFile(imagePath);
|
||||
buffer = b.buffer;
|
||||
}
|
||||
|
||||
const tags = await ExifReader.load(buffer, { async: true });
|
||||
|
||||
if (!buffer) return undefined;
|
||||
|
||||
const out: Record<string, any> = {};
|
||||
let hasExif = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user