使用Lambda中的imagemagick图层使用.js和gm在图像上应用水印

问题描述

我观看了一个Youtube视频,该视频关于在Lambda上添加Imagemagick层并使用它来使用Imagemagick提供的不同功能。该示例显示了如何调整图像大小,但是我需要对其应用水印。视频中给出的代码如下:

const gm = GM.subClass({ imageMagick: true });
const FileType = require('file-type');
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const axios = require('axios');

exports.downloadImage = async (url) => {
  const res = await axios.get(url,{ responseType: 'arraybuffer' });
  return Buffer.from(res.data,'binary');
};

exports.resize = async (buf,width,height) => {
  return new Promise((resolve,reject) => {
    gm(buf).resize(width,height).noprofile().toBuffer((err,buffer) => err ? reject(err) : resolve(buffer));
  });
};

exports.savetoS3 = async (bucket,name,buf) => {
  const contentType = await FileType.fromBuffer(buf);
  const key = `${name}.${contentType.ext}`;
  await s3.putObject({
    Bucket: bucket,Key: key,Body: buf,ContentEncoding: 'base64',ContentType: contentType.mime,}).promise();
  return key;
};

现在,我需要使用Imagemagick gm库应用水印,我发现convert可以将一些文本应用到照片中,但是我对javascript相当陌生,因此不完全确定如何进行编辑以使resize功能可以用作水印功能。如果有人可以阐明这一点,将会有很大的帮助。谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)