Files
coolsoup/src/generators/from-photo.ts

56 lines
1.5 KiB
TypeScript

import type { GeneratedImage } from '../stores'
import { processPhoto } from './from-photo-generator'
export async function generateFromPhotoImage(file: File, size: number): Promise<GeneratedImage> {
try {
const result = await processPhoto(file, {
targetSize: size,
contrastEnhancement: true,
grayscaleConversion: true,
})
const image: GeneratedImage = {
id: `from-photo-${Date.now()}`,
canvas: result.canvas,
imageData: result.imageData,
generator: 'from-photo',
params: {
fileName: file.name,
fileSize: file.size,
fileType: file.type,
processedAt: new Date().toISOString(),
size,
contrastEnhanced: true,
grayscaleConverted: true,
},
}
return image
} catch (error) {
console.error('Failed to process photo:', error)
// Fallback: create a black canvas
const canvas = document.createElement('canvas')
const ctx = canvas.getContext('2d')!
canvas.width = size
canvas.height = size
ctx.fillStyle = '#000000'
ctx.fillRect(0, 0, size, size)
const imageData = ctx.getImageData(0, 0, size, size)
const fallbackImage: GeneratedImage = {
id: `from-photo-error-${Date.now()}`,
canvas,
imageData,
generator: 'from-photo',
params: {
fileName: file.name,
error: error instanceof Error ? error.message : 'Unknown error',
size,
},
}
return fallbackImage
}
}