Skip to main content
Glama
render.ts1.31 kB
import sharp from "sharp" import { ImageData } from "." export const rasterizeSvg = async (svg: string, scale?: number): Promise<ImageData> => { const svgBuffer = Buffer.from(svg, 'utf-8') const { width } = await sharp(svgBuffer).metadata() let img = sharp(svgBuffer).webp({quality: 95}) if (width) img = img.resize({ width: Math.ceil(width * (scale ?? 1.0)) }) const rasterizedBuffer = await img.toBuffer() return { data: rasterizedBuffer.toString("base64"), mimeType: 'image/webp', } } export const compressImage = async (image: ImageData, scale?: number): Promise<ImageData> => { const { data } = image const buffer = Buffer.from(data, 'base64') const { width } = await sharp(buffer).metadata() let img = sharp(buffer).webp({quality: 95}) if (width) img = img.resize({ width: Math.ceil(width * (scale ?? 1.0)) }) const compressedBuffer = await img.toBuffer() return { data: compressedBuffer.toString('base64'), mimeType: 'image/webp', } } export const getImageSize = async (image: ImageData): Promise<{ width: number; height: number }> => { const buffer = Buffer.from(image.data, (image.mimeType == 'image/svg+xml' ? 'utf-8' : 'base64')) const { width, height } = await sharp(buffer).metadata() return { width: width ?? 0, height: height ?? 0 } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/recraft-ai/mcp-recraft-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server