@recraft-ai/mcp-recraft-server
Version:
MCP Server implementation for recraft.ai API
50 lines (49 loc) • 2.67 kB
JavaScript
;
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;