mirror of
https://github.com/pacnpal/Roo-Code.git
synced 2025-12-22 21:31:08 -05:00
46 lines
1.1 KiB
TypeScript
46 lines
1.1 KiB
TypeScript
import * as vscode from "vscode"
|
|
import fs from "fs/promises"
|
|
import * as path from "path"
|
|
|
|
export async function selectImages(): Promise<string[]> {
|
|
const options: vscode.OpenDialogOptions = {
|
|
canSelectMany: true,
|
|
openLabel: "Select",
|
|
filters: {
|
|
Images: ["png", "jpg", "jpeg", "webp"], // supported by anthropic and openrouter
|
|
},
|
|
}
|
|
|
|
const fileUris = await vscode.window.showOpenDialog(options)
|
|
|
|
if (!fileUris || fileUris.length === 0) {
|
|
return []
|
|
}
|
|
|
|
return await Promise.all(
|
|
fileUris.map(async (uri) => {
|
|
const imagePath = uri.fsPath
|
|
const buffer = await fs.readFile(imagePath)
|
|
const base64 = buffer.toString("base64")
|
|
const mimeType = getMimeType(imagePath)
|
|
const dataUrl = `data:${mimeType};base64,${base64}`
|
|
return dataUrl
|
|
})
|
|
)
|
|
}
|
|
|
|
function getMimeType(filePath: string): string {
|
|
const ext = path.extname(filePath).toLowerCase()
|
|
switch (ext) {
|
|
case ".png":
|
|
return "image/png"
|
|
case ".jpeg":
|
|
case ".jpg":
|
|
return "image/jpeg"
|
|
case ".webp":
|
|
return "image/webp"
|
|
default:
|
|
throw new Error(`Unsupported file type: ${ext}`)
|
|
}
|
|
}
|