【发布时间】:2020-11-20 00:01:55
【问题描述】:
我正在尝试创建一个 AWS Lambda 函数来对图像应用水印效果。原始图像将从 S3 中提取,应用水印并将结果上传回 S3。
我正在使用sharp 使用以下代码创建这些作品:
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>`;
在 SVG 内部有一个文本元素,我可以动态更改它以包含指定的字符串。例如,我可以将(c) Company Name 放在一张图片上,将(c) John Doe 放在另一张图片上。
代码在我的机器上运行时有效,但是一旦在具有 Node.js 12.x 运行时的 Lambda 函数中,这就是结果
如您所见,我将Open Sans 指定为要使用的字体。我其实把OpenSans-Regular.ttf文件放到/fonts/里面,创建了一个fonts.conf文件,并按照this question中的描述设置了一个FONTCONFIG_PATH='/var/task/fonts'。
尽管如此,字体仍然无法正常工作。有人对我如何解决这个问题有建议吗?
【问题讨论】:
标签: amazon-web-services fonts aws-lambda sharp