Spaces:
Sleeping
Sleeping
| import { NextResponse } from 'next/server'; | |
| export async function POST(request: Request) { | |
| const { prompt } = await request.json(); | |
| try { | |
| const response = await fetch( | |
| "https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-3.5-large", | |
| { | |
| headers: { | |
| Authorization: `Bearer ${process.env.NEXT_PUBLIC_HUGGINGFACE_API_KEY}`, | |
| "Content-Type": "application/json", | |
| }, | |
| method: "POST", | |
| body: JSON.stringify({ | |
| inputs: prompt, | |
| parameters: { | |
| negative_prompt: "blurry, bad quality, distorted", | |
| num_inference_steps: 30, | |
| guidance_scale: 7.5, | |
| } | |
| }), | |
| } | |
| ); | |
| if (!response.ok) { | |
| throw new Error(`HTTP error! status: ${response.status}`); | |
| } | |
| const imageBlob = await response.blob(); | |
| const arrayBuffer = await imageBlob.arrayBuffer(); | |
| const buffer = Buffer.from(arrayBuffer); | |
| const base64Image = buffer.toString('base64'); | |
| const contentType = response.headers.get('content-type') || 'image/jpeg'; | |
| return NextResponse.json({ | |
| imageUrl: `data:${contentType};base64,${base64Image}`, | |
| success: true | |
| }); | |
| } catch (error) { | |
| console.error('Image generation error:', error); | |
| return NextResponse.json({ | |
| error: 'Failed to generate image', | |
| success: false, | |
| }, { status: 500 }); | |
| } | |
| } |