diff --git a/src/commands/image/generate.ts b/src/commands/image/generate.ts index 6cd528f..55b87d3 100644 --- a/src/commands/image/generate.ts +++ b/src/commands/image/generate.ts @@ -7,7 +7,12 @@ import type { Config } from '../../config/schema'; import type { GlobalFlags } from '../../types/flags'; import type { ImageRequest, ImageResponse } from '../../types/api'; import { mkdirSync, existsSync, readFileSync } from 'fs'; -import { join, resolve } from 'path'; +import { join, resolve, extname } from 'path'; + +const MIME_TYPES: Record = { + '.jpg': 'image/jpeg', '.jpeg': 'image/jpeg', + '.png': 'image/png', '.webp': 'image/webp', +}; import { isInteractive } from '../../utils/env'; import { promptText, failIfMissing } from '../../utils/prompt'; @@ -69,7 +74,9 @@ export default defineCommand({ } else { const imgPath = resolve(params.image); const imgData = readFileSync(imgPath); - ref.image_file = `data:image/jpeg;base64,${imgData.toString('base64')}`; + const ext = extname(imgPath).toLowerCase(); + const mime = MIME_TYPES[ext] || 'image/jpeg'; + ref.image_file = `data:${mime};base64,${imgData.toString('base64')}`; } } diff --git a/src/commands/video/generate.ts b/src/commands/video/generate.ts index 198d067..77f3473 100644 --- a/src/commands/video/generate.ts +++ b/src/commands/video/generate.ts @@ -10,6 +10,12 @@ import type { Config } from '../../config/schema'; import type { GlobalFlags } from '../../types/flags'; import type { VideoRequest, VideoResponse, VideoTaskResponse, FileRetrieveResponse } from '../../types/api'; import { readFileSync } from 'fs'; +import { extname } from 'path'; + +const MIME_TYPES: Record = { + '.jpg': 'image/jpeg', '.jpeg': 'image/jpeg', + '.png': 'image/png', '.webp': 'image/webp', +}; import { isInteractive } from '../../utils/env'; import { promptText, failIfMissing } from '../../utils/prompt'; @@ -63,7 +69,9 @@ export default defineCommand({ body.first_frame_image = framePath; } else { const imgData = readFileSync(framePath); - body.first_frame_image = `data:image/jpeg;base64,${imgData.toString('base64')}`; + const ext = extname(framePath).toLowerCase(); + const mime = MIME_TYPES[ext] || 'image/jpeg'; + body.first_frame_image = `data:${mime};base64,${imgData.toString('base64')}`; } }