【发布时间】:2021-02-16 18:45:35
【问题描述】:
这些是我用于向图像添加水印的代码:
const ORIGINAL_IMAGE = "https://example/sample_image;
const LOGO = fs.readFileSync('gangle.png');
const LOGO_MARGIN_PERCENTAGE = 5;
let [image, logo] = await Promise.all([
Jimp.read(ORIGINAL_IMAGE),
Jimp.read(LOGO)
]);
logo.resize(image.bitmap.width, Jimp.AUTO);
const xMargin = (image.bitmap.width * LOGO_MARGIN_PERCENTAGE) / 100;
const yMargin = (image.bitmap.width * LOGO_MARGIN_PERCENTAGE) / 100;
const X = image.bitmap.width - logo.bitmap.width - xMargin;
const Y = image.bitmap.height - logo.bitmap.height - yMargin;
image.composite(logo, X, Y, [
{
mode: Jimp.BLEND_SCREEN,
opacitySource: 0.1,
opacityDest: 1
}
]);
image.write('animatedimg.gif')
但它仅适用于文件类型为 png/jpg/jpeg 的图像。 它不适用于 gif 图像。
它将生成一个文件“animatedimg.gif”,但该文件不会加载到任何图像查看器或浏览器中。
如果我尝试在 mac 中打开该文件,弹出窗口将显示以下消息: "文件“animatedimg.gif”为空,无法打开。"
在 jimp 中有没有办法做到这一点? 或者还有其他 npm 包吗? 谢谢。
【问题讨论】:
-
您需要处理 GIF 的每一帧,为每一帧添加水印...... jimp 有这样的功能吗?也许gifwrap 会有所帮助
-
@JaromandaX 我会试试的,谢谢。
-
@JaromandaX 有没有办法使用 gifwrap 从 url 读取图像?
-
抱歉,我还没有阅读过 gifwrap 的文档 - 在 jimp 或 gifwrap 文档中与 jimp 结合使用 很有用 - 阅读文档并尝试一下我只想说,因为这是你的项目
-
@noyruto88 不,你必须自己做。发出 HTTP 请求,将该文件写入您的文件系统,然后利用
gifwrap读取您刚刚使用GifUtil.read保存的文件。
标签: javascript npm gif animated-gif jimp