fix: conversion HEIC serveur via heic-convert (WASM, supporte HEIC Apple vs sharp AVIF only)
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { NextRequest, NextResponse } from 'next/server'
|
||||
import { getServerSession } from 'next-auth'
|
||||
import { authOptions } from '@/lib/auth'
|
||||
import sharp from 'sharp'
|
||||
import convert from 'heic-convert'
|
||||
|
||||
export async function POST(req: NextRequest) {
|
||||
const session = await getServerSession(authOptions)
|
||||
@@ -12,17 +12,24 @@ export async function POST(req: NextRequest) {
|
||||
const file = formData.get('file') as File | null
|
||||
if (!file) return NextResponse.json({ error: 'Fichier manquant' }, { status: 400 })
|
||||
|
||||
const buffer = Buffer.from(await file.arrayBuffer())
|
||||
const jpegBuffer = await sharp(buffer).jpeg({ quality: 92 }).toBuffer()
|
||||
const inputBuffer = Buffer.from(await file.arrayBuffer())
|
||||
// heic-convert utilise libheif WASM — supporte HEIC/HEIF sur tous les environnements
|
||||
const outputBuffer = await convert({
|
||||
buffer: inputBuffer,
|
||||
format: 'JPEG',
|
||||
quality: 0.92,
|
||||
})
|
||||
|
||||
return new NextResponse(jpegBuffer.buffer as ArrayBuffer, {
|
||||
const jpeg = Buffer.from(outputBuffer)
|
||||
return new NextResponse(jpeg.buffer as ArrayBuffer, {
|
||||
headers: {
|
||||
'Content-Type': 'image/jpeg',
|
||||
'Content-Length': String(jpegBuffer.length),
|
||||
'Content-Length': String(jpeg.length),
|
||||
},
|
||||
})
|
||||
} catch (err) {
|
||||
const message = err instanceof Error ? err.message : 'Erreur conversion'
|
||||
console.error('[convert-heic API]', message)
|
||||
return NextResponse.json({ error: message }, { status: 500 })
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
declare module 'heic-convert';
|
||||
Reference in New Issue
Block a user