Feat/image-optimization-with-astro
* feat: add astro sharp service * feat: add content type metadata
This commit is contained in:
parent
a1a54b0294
commit
83ebdcbf21
|
@ -2,6 +2,7 @@ import { createClient } from "@supabase/supabase-js"
|
||||||
import type { APIRoute } from "astro"
|
import type { APIRoute } from "astro"
|
||||||
import { createKysely } from "@vercel/postgres-kysely"
|
import { createKysely } from "@vercel/postgres-kysely"
|
||||||
import { customAlphabet } from "nanoid"
|
import { customAlphabet } from "nanoid"
|
||||||
|
import sharpService from "astro/assets/services/sharp"
|
||||||
|
|
||||||
import type { Database } from "@/lib/db"
|
import type { Database } from "@/lib/db"
|
||||||
|
|
||||||
|
@ -37,11 +38,20 @@ export const POST: APIRoute = async ({ request }) => {
|
||||||
|
|
||||||
const randomImageId = nanoid()
|
const randomImageId = nanoid()
|
||||||
|
|
||||||
const imageName = `${image.name.replace(/\.[^/.]+$/, "")}${randomImageId}.jpg`
|
const imageName = `${image.name.replace(/\.[^/.]+$/, "")}${randomImageId}.webp`
|
||||||
|
|
||||||
const { error } = await supabase.storage.from("images").upload(`public/${imageName}`, image, {
|
const imageBuf = await image.arrayBuffer()
|
||||||
|
|
||||||
|
const { data } = await sharpService.transform(
|
||||||
|
new Uint8Array(imageBuf),
|
||||||
|
{ src: imageName },
|
||||||
|
{ domains: [], remotePatterns: [], service: { entrypoint: "", config: { limitInputPixels: false } } }
|
||||||
|
)
|
||||||
|
|
||||||
|
const { error } = await supabase.storage.from("images").upload(`public/${imageName}`, data, {
|
||||||
cacheControl: "3600",
|
cacheControl: "3600",
|
||||||
upsert: false
|
upsert: false,
|
||||||
|
contentType: "image/webp"
|
||||||
})
|
})
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user