fix(media): handle SVG inputs using browser Canvas pre-conversion for ImageMagick WASM

This commit is contained in:
2026-02-26 18:15:41 +01:00
parent f20cedffd5
commit 8a9ff3582f
2 changed files with 52 additions and 0 deletions

View File

@@ -1,4 +1,5 @@
import { loadImageMagick } from '@/lib/media/wasm/wasmLoader';
import { convertSvgToPng } from '../utils/fileUtils';
import type { ConversionOptions, ProgressCallback, ConversionResult } from '@/types/media';
/**
@@ -13,6 +14,19 @@ export async function convertWithImageMagick(
const startTime = Date.now();
try {
let inputFile = file;
const isSvg = file.type === 'image/svg+xml' || file.name.endsWith('.svg');
// Handle SVG inputs by pre-converting to PNG using browser Canvas
if (isSvg) {
if (onProgress) onProgress(5);
// If we have dimensions in options, use them, otherwise use a high-res default
const width = options.imageWidth || 1024;
const height = options.imageHeight || 1024;
const pngBlob = await convertSvgToPng(file, width, height);
inputFile = new File([pngBlob], file.name.replace(/\.svg$/i, '.png'), { type: 'image/png' });
}
// Load ImageMagick instance
await loadImageMagick();