Amazon web services 在AWS Lambda和Node.js 12.x中使用自定义字体

Amazon web services 在AWS Lambda和Node.js 12.x中使用自定义字体,amazon-web-services,fonts,aws-lambda,sharp,Amazon Web Services,Fonts,Aws Lambda,Sharp,我正在尝试创建一个AWS Lambda函数来对图像应用水印效果。原始图像将从S3中提取,应用水印并将结果上传回S3 我使用以下代码创建这些合成: await sharp(inputImage) .rotate() .composite([{ input: new Buffer.from(watermark), tile: true, gravity: 'northwest' }]) 使用自定义水印SVG watermark = `<

我正在尝试创建一个AWS Lambda函数来对图像应用水印效果。原始图像将从S3中提取,应用水印并将结果上传回S3

我使用以下代码创建这些合成:

await sharp(inputImage)
              .rotate()
              .composite([{ input: new Buffer.from(watermark), tile: true, gravity: 'northwest' }])
使用自定义水印SVG

watermark = `<svg ... <text x="50%" y="100%" style="font-family:'Open Sans';font-weight:400;font-size:75px;font-style:normal;fill:rgba(128,128,128,1);stroke:none;" text-anchor="middle">${event.watermarkName}</text></g></svg>`;

watermark=`问Stackoverflow有助于我自己找到答案,因此我将与大家分享,以防将来有人偶然发现这个问题

AWS Lambda本身似乎甚至不支持基本字体。因此,您需要将onw字体作为文件包含在部署zip文件中

在我的情况下,这起了作用:

  • 创建一个
    /fonts
    文件夹,并将所有需要的文件放入其中(在我的例子中是
    OpenSans Regular.ttf

  • 将名为
    font.conf
    的文件放入此文件夹中

    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
    <fontconfig>
       <dir>/var/task/fonts/</dir>
       <cachedir>/tmp/fonts-cache/</cachedir>
       <config></config>
    </fontconfig>
    


FONTCONFIG_路径
对我不起作用。只有
FONTCONFIG_FILE=“/var/task/fonts.conf”
对我有效。
 FONTCONFIG_PATH='./fonts'