可以把这段函数计算回传的base64改为回传图片吗const fs = requirefs;const path = requirepath;const puppeteer = requirepuppeteer;const launchBrowser = async = const browser = await puppeteerlaunch args --disable
可以将回传的base64改为回传图片。我们可以使用Node.js的Buffer对象来读取文件并将其转换为base64字符串,然后将其作为响应的主体发送回去。以下是修改后的代码:
const fs = require('fs'); const path = require('path'); const puppeteer = require('puppeteer');
const launchBrowser = async () => { const browser = await puppeteer.launch({ args: [ '--disable-gpu', '--disable-dev-shm-usage', '--disable-setuid-sandbox', '--no-first-run', '--no-zygote', '--no-sandbox' ], headless: true, });
return browser; };
const autoScroll = async (page) => { return page.evaluate(() => { return new Promise((resolve, reject) => { var totalHeight = 0; var distance = 100; var timer = setInterval(() => { var scrollHeight = document.body.scrollHeight; window.scrollBy(0, distance); totalHeight += distance; if (totalHeight >= scrollHeight) { clearInterval(timer); resolve(); } }, 100); }); }); };
exports.handler = async (event, context) => { const input = JSON.parse(event.body).input; console.log('Input:', input);
const fileinput = ${Date.now()}.mmd;
fs.writeFileSync(/tmp/${fileinput}, input);
const output = ${Date.now()}.png;
const browser = await launchBrowser();
const page = await browser.newPage();
await page.emulateTimezone('Asia/Shanghai');
try {
const html = fs.readFileSync(path.join(__dirname, 'template.html'), 'utf8');
const renderedHtml = html.replace('{{mermaid}}', input);
const filehtml = ${Date.now()}.html;
fs.writeFileSync(/tmp/${filehtml}, renderedHtml);
let url = 'file://' + path.join('/tmp', filehtml);
await page.goto(url, { waitUntil: 'networkidle2' });
await page.setViewport({ width: 1200, height: 800 });
await autoScroll(page);
await page.screenshot({ path: /tmp/${output}, fullPage: true, type: 'png' });
console.log('Image generated:', output);
const imageBuffer = fs.readFileSync(`/tmp/${output}`);
return {
statusCode: 200,
headers: {
'Content-Type': 'image/png',
},
body: imageBuffer.toString('base64'),
isBase64Encoded: true,
};
} catch (err) { console.error(err); return { statusCode: 500, body: 'Error generating image', }; } finally { await browser.close(); } }
原文地址: https://www.cveoy.top/t/topic/gKKb 著作权归作者所有。请勿转载和采集!