diff --git a/functions/rasterize.js b/functions/rasterize.js new file mode 100644 index 0000000..7f44bad --- /dev/null +++ b/functions/rasterize.js @@ -0,0 +1,18 @@ +const sharp = require("sharp") + + exports.handler = async function (event, context) { + console.log("event", event, context, event.rawQuery); + let data = event.rawQuery.replace(/\=/g,'') + let svg = atob(data) || decodeURIComponent(event.rawQuery); + if (!svg.startsWith("${svg}` + console.log("svg", svg) + const img = sharp(Buffer.from(svg)) + .resize(1200) + const jpeg = img.jpeg().toBuffer(); + return { + statusCode: 200, + headers: {"content-type": "image/jpeg"}, + isBase64Encoded: true, + body: (await jpeg).toString('base64') + }; + }; \ No newline at end of file diff --git a/package.json b/package.json index 130fec3..a08e6da 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "dependencies": { - "brotli-wasm": "^1.1.0" + "brotli-wasm": "^1.1.0", + "sharp": "^0.31.3" }, "devDependencies": { "netlify-cli": "^11.5.1"