Skip to main content
Glama

Mobile Next MCP

image-utils.ts1.53 kB
import { execFileSync, spawnSync } from "child_process"; const DEFAULT_JPEG_QUALITY = 75; export class ImageTransformer { private newWidth: number = 0; private newFormat: "jpg" | "png" = "png"; private jpegOptions: { quality: number } = { quality: DEFAULT_JPEG_QUALITY }; constructor(private buffer: Buffer) {} public resize(width: number): ImageTransformer { this.newWidth = width; return this; } public jpeg(options: { quality: number }): ImageTransformer { this.newFormat = "jpg"; this.jpegOptions = options; return this; } public png(): ImageTransformer { this.newFormat = "png"; return this; } public toBuffer(): Buffer { const proc = spawnSync("magick", ["-", "-resize", `${this.newWidth}x`, "-quality", `${this.jpegOptions.quality}`, `${this.newFormat}:-`], { maxBuffer: 8 * 1024 * 1024, input: this.buffer }); return proc.stdout; } } export class Image { constructor(private buffer: Buffer) {} public static fromBuffer(buffer: Buffer): Image { return new Image(buffer); } public resize(width: number): ImageTransformer { return new ImageTransformer(this.buffer).resize(width); } public jpeg(options: { quality: number }): ImageTransformer { return new ImageTransformer(this.buffer).jpeg(options); } } export const isImageMagickInstalled = (): boolean => { try { return execFileSync("magick", ["--version"]) .toString() .split("\n") .filter(line => line.includes("Version: ImageMagick")) .length > 0; } catch (error) { return false; } };

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/EmpathySlainLovers/MCP'

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