nodejs图片处理工具gm(工具下载,模块添加,添加水印,中文乱码)

工具下载

GraphicsMagick和ImageMagick

  • 博主一开始安装gm的时候,也是被其他攻略误导过,大部分帖子都会让你安装GraphicsMagick和ImageMagick,但是不清楚到底是安装哪一个还是两个都安装。
  • 在这里博主推荐直接安装ImageMagick就行了,因为GraphicsMagick这里有个坑,不建议下载,下面会说到这个问题。

下载地址(windows版本)

GraphicsMagick(不建议下载)和ImageMagick

红圈位置下载
(GraphicsMagick)直接点击红圈位置的字体便可以下载

在这里插入图片描述
(ImageMagick)拉到最下面,博主下载的是红圈的这个版本

ImageMagick安装选项

在这里插入图片描述
红圈位置一定要点上,不然有可能会出现{code: 4, signal: null}的错误

查看ImageMagick版本号

运行命令行win+R 输入cmd回车
在这里插入图片描述

  • 执行指令convert -version
  • 返回下图版本号就是安装成功
    在这里插入图片描述
    注意事项:有些电脑安装完成后,执行该指令会返回无法驱动器规格或者没有东西反馈,请重启电脑。

模块添加

npm install gm

添加水印

使用gm主要还是用来添加水印,因为nodejs本身自带的image模块能满足大部分需求,但是无法添加水印,所以下面就使用gm添加水印的方法。

载入gm模块

const gm = require('gm').subClass({imageMagick: true})

指定图片添加文字

gm(./uploads/pic/test.jpg)	//指定添加水印的图片
	.stroke("white")		//字体外围颜色
    .fill("white")			//字体内围颜色(不设置默认为黑色)
    .drawText(50,50,"China")
    .write(./uploads/pic/watermark.jpg, function (err) {
            console.log(err)
            if (!err) console.log('ok');
            else console.log(err);
        });

在这里插入图片描述

添加中文字体

需要加入字库ttf
微软雅黑.ttf(可上网下载其他字库)
密码:ani2

.font("./ttf/msyh.ttf",60) //字库所在文件夹和字体大小
gm(./uploads/pic/test.jpg)	//指定添加水印的图片
	.stroke("white")		//字体外围颜色
    .fill("white")			//字体内围颜色(不设置默认为黑色)
    .font("./ttf/msyh.ttf",60) //字库所在文件夹和字体大小
    .drawText(50,50,"中文China")
    .write(./uploads/pic/watermark.jpg, function (err) {
            console.log(err)
            if (!err) console.log('ok');
            else console.log(err);
        });

在这里插入图片描述

添加日期水印

下载moment模块
npm install moment

加载模块

const moment = require('moment');

调用

var datetime = moment().format("YYYY-MM-DD HH:mm:ss");
gm(./uploads/pic/test.jpg)	//指定添加水印的图片
	.stroke("white")		//字体外围颜色
    .fill("white")			//字体内围颜色(不设置默认为黑色)
    .font("./ttf/msyh.ttf",60) //字库所在文件夹和字体大小
    .drawText(50,50,datetime)
    .write(./uploads/pic/watermark.jpg, function (err) {
            console.log(err)
            if (!err) console.log('ok');
            else console.log(err);
        });

在这里插入图片描述

中文乱码

自身体验

重点来了,博主也是被这个地方坑了很久,卡了一整天的时间。虽然网上有一些解决方案但是没有写到重点上,导致我在解决这个问题上卡了很久,一直出现中文乱码。

解决方案

这个问题很好解决,先说说博主是怎么遇到的

  • 博主也是根据网上教程一步步安装gm,问题也是在这里正如前面所说,有些教程没有区分GraphicsMagick和ImageMagick,导致博主安装过程中两个一起安装。
  • 那么一起安装会出现什么问题,我自己的电脑出现的问题就是,在调用gm过程中,ImageMagick的调用完全被GraphicsMagick占据了,导致nodejs调用gm模块过程,无论你如何调用都是GraphicsMagick的方式。
  • 而实际测试中可以发现GraphicsMagick并不具备中文水印的功能,所以中文显示都是乱码的情况,那是因为GraphicsMagick是从ImageMagick分割独立出来的一小部分,可能并不具备中文功能。
  • 代码上能解决的方案就是去指定gm的路径,将gm的调用指定到ImageMagick,而不是GraphicsMagick,网上有些大神貌似已经有用过这个操作。
    最直接的解决方案
  • 从根本上解决问题,就是下载工具过程中,只下载ImageMagick
  • 如果出现这种情况的小伙伴建议卸载GraphicsMagick和ImageMagick,再重新安装ImageMagick并重启电脑

最后

参考的文章我会贴在下面
很感谢其他博主的文章让我能顺利使用gm工具
[vcxiaohan2]node图片处理工具gm的使用:图片水印、图片验证码、图片裁剪示例
[peachesTao]解决NodeJs gm模块报错{ [Error: Command failed: aaЧaaaa ] code: 4, signal: null }
[无名大盗]nodejs图片处理工具gm用法

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Node.js 中的图片处理模块有很多,以下是一些常用的: 1. Sharp:一个高性能的图片处理库,支持缩放、裁剪、旋转、锐化、模糊等操作。 2. Jimp:一个纯 JavaScript 编写的图片处理库,支持常见的图片操作,如缩放、裁剪、旋转、滤镜等。 3. GraphicsMagick:一个功能强大的图片处理库,支持多种格式的图片处理,如缩放、旋转、剪裁等,可以通过 Node.jsgm 模块调用。 4. ImageMagick:与 GraphicsMagick 类似,同样是一个功能强大的图片处理库,也可以通过 Node.js 的 imagemagick 模块调用。 5. canvas:一个基于 HTML5 Canvas 的图片处理库,支持绘制、裁剪、变换等操作,可以在 Node.js 中使用。 以上是一些常用的 Node.js 图片处理模块,你可以根据自己的需求选择合适的模块。 ### 回答2: Node.js中有一些常用的图片处理模块,可以方便地进行图片处理和操作。 1. GraphicsMagick:它是一个强大的开源图片处理库,Node.js使用gm模块来对其进行封装。它支持各种图片格式的读取与写入,可以进行图片缩放、裁剪、旋转、合并等操作。使用该模块可以很方便地在Node.js处理大量的图片。 2. Sharp:这是一个高性能的图像处理库,可以用于修改、调整和转换图像。它支持图片的压缩、缩放、裁剪、旋转等操作,并具有较高的速度和内存使用效率。Sharp在处理大型图片时表现出色,是一个非常流行的图片处理模块之一。 3. Jimp:这是一个纯JavaScript编写的图片处理库,可以在Node.js中进行图片处理和操作。它支持常见的图片格式,并且提供了丰富的API来进行图片的缩放、裁剪、颜色处理、文本叠加等操作。Jimp易于学习和使用,适合用于简单的图片处理需求。 这些图片处理模块都可以在Node.js中很方便地安装和使用,可以根据具体的需求选择适合自己的模块处理图片。无论是对于网站的图片上传和处理,还是对于图像数据的分析和处理Node.js图片处理模块都能提供便捷的解决方案。 ### 回答3: Node.js中的图片处理模块有很多选择,其中一些最受欢迎和广泛使用的模块包括: 1. `sharp`:这是一个高性能的图像处理库,可以在Node.js中快速处理图像。它支持图像的调整大小、裁剪、旋转、转换格式、应用滤镜等操作。 2. `gm`:这是另一个流行的图像处理模块,可以使用GraphicsMagick或ImageMagick在Node.js中进行图像操作。它支持图像的剪裁、缩放、旋转、转换格式等功能。 3. `jimp`:这是一个纯JavaScript编写的图像处理库,在Node.js中可以进行图像的调整大小、裁剪、旋转、滤镜应用等操作。它提供了易于使用的API,并且支持跨平台使用。 4. `lwip`:这是一个轻量级的图像处理库,可以在Node.js中进行图像的缩放、裁剪、旋转等操作。它提供了简单的API和异步操作,适合用于快速的图像处理需求。 除了以上提到的模块,还有许多其他的图像处理模块可供选择,每个模块都有其特定的优点和适用场景。根据项目需求和个人偏好,选择合适的模块进行图像处理是非常重要的。需要根据具体的使用情况和需求来评估各个模块的性能、功能和易用性,并选择最适合的模块来完成工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值