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 { createKysely } from "@vercel/postgres-kysely"
|
||||
import { customAlphabet } from "nanoid"
|
||||
import sharpService from "astro/assets/services/sharp"
|
||||
|
||||
import type { Database } from "@/lib/db"
|
||||
|
||||
|
@ -37,11 +38,20 @@ export const POST: APIRoute = async ({ request }) => {
|
|||
|
||||
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",
|
||||
upsert: false
|
||||
upsert: false,
|
||||
contentType: "image/webp"
|
||||
})
|
||||
|
||||
if (error) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user