UNPKG

@recraft-ai/mcp-recraft-server

Version:
50 lines (49 loc) 2.67 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getImageSize = exports.compressImage = exports.rasterizeSvg = void 0; const sharp_1 = __importDefault(require("sharp")); const rasterizeSvg = (svg, scale) => __awaiter(void 0, void 0, void 0, function* () { const svgBuffer = Buffer.from(svg, 'utf-8'); const { width } = yield (0, sharp_1.default)(svgBuffer).metadata(); let img = (0, sharp_1.default)(svgBuffer).webp({ quality: 95 }); if (width) img = img.resize({ width: Math.ceil(width * (scale !== null && scale !== void 0 ? scale : 1.0)) }); const rasterizedBuffer = yield img.toBuffer(); return { data: rasterizedBuffer.toString("base64"), mimeType: 'image/webp', }; }); exports.rasterizeSvg = rasterizeSvg; const compressImage = (image, scale) => __awaiter(void 0, void 0, void 0, function* () { const { data } = image; const buffer = Buffer.from(data, 'base64'); const { width } = yield (0, sharp_1.default)(buffer).metadata(); let img = (0, sharp_1.default)(buffer).webp({ quality: 95 }); if (width) img = img.resize({ width: Math.ceil(width * (scale !== null && scale !== void 0 ? scale : 1.0)) }); const compressedBuffer = yield img.toBuffer(); return { data: compressedBuffer.toString('base64'), mimeType: 'image/webp', }; }); exports.compressImage = compressImage; const getImageSize = (image) => __awaiter(void 0, void 0, void 0, function* () { const buffer = Buffer.from(image.data, (image.mimeType == 'image/svg+xml' ? 'utf-8' : 'base64')); const { width, height } = yield (0, sharp_1.default)(buffer).metadata(); return { width: width !== null && width !== void 0 ? width : 0, height: height !== null && height !== void 0 ? height : 0 }; }); exports.getImageSize = getImageSize;