可以将回传的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(); } }

可以把这段函数计算回传的base64改为回传图片吗const fs = requirefs;const path = requirepath;const puppeteer = requirepuppeteer;const launchBrowser = async = const browser = await puppeteerlaunch args --disable

原文地址: https://www.cveoy.top/t/topic/gKKb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录