nodejs gm drawText使用(中文、字体、大小及颜色)

2019-02-12 16:20:47

node党悲催的发现,图片处理工具只有一个gm可以选。gm无非是调用了GraphicsMagick/ImageMagick而已,性能不敢恭维。但是有很多后台生成图片的场景,没办法,只能硬着头皮上了。


前文 ( nodejs图片处理工具gm用法 ) 总结了nodejs gm的基本操作,本篇细说给图片添加文字的接口drawText。


基本用法

gm("test.png")

.drawText(x, y, text [, gravity])

1

2

如果没有gravity参数,那么就将text绘制到图片中的(x,y)坐标处。 

如果带有gravity参数,从(x,y)坐标开始到右下角构成的图片范围内,依据gravity含义绘制文字。 

gravity选项如下:


NorthWest, North, NorthEast, West, Center,

East, SouthWest, South, or SouthEast

1

2

用法示例:


值得注意的是,在带有gravity的情形下,(x,y)坐标能起到对位置的调整作用,而且还可以取负值。


gm('test.png')


.drawText(100, 100, 'Hello')            //绘制到(100,100)位置处


.drawText(0, 0, 'Hello', 'Center'); //绘制到图片正中间


.drawText(0, 10, 'Hello', 'Center');    //图片上面裁除10px,剩下部分的中心。等同于原图中心往下5px


.drawText(0, -10, 'Hello', 'Center');   //同上,等同于原图中心往上5px


.drawText(0, 0, 'Hello', 'NorthEast');  //原图右上角

1

2

3

4

5

6

7

8

9

10

11

中文

gm不能直接绘制中文,需要在绘制的时候引入相应的字库。


gm('test.png')

.font('./fonts/heiti.ttf')      //引入预先下载的黑体字库

.drawText(10, 10, '这是一个测试')

1

2

3

字体大小

可以通过fontSize修改字号。


gm('test.png')

.fontSize(36)           //字体大小36

.drawText(10, 10, '这是一个测试')

1

2

3

字体颜色

通过fill修改填充颜色。


gm('test.png')

.fill('#ffffff')        //设置白色

.drawText(10, 10, '这是一个测试')

1

2

3

字体、大小和颜色,有了这些,基本上就可以自由的在图片上绘制了。


参考

官方文档:GraphicsMagick for node.js


How do I change the color of text I’m drawing with node graphicsmagick?


Nodejs图片编辑和中文乱码


  • 2020-03-21 12:09:59

    Android使用AttributeSet自定义控件的方法

    我们可以在attrs.xml中声明自己控件的属性,在布局xml文档中声明自己的命名空间,这时就可以对设置自己想要的值了,然后在AttributeSet这个属性中获取对应的值。好了不多说,我们来看下代码,一切尽在不言中:

  • 2020-03-22 21:16:07

    用vue做的跟随鼠标移动的div

    最近接到一个任务,就是在既存用electron-vue开发的桌面端程序上追加随鼠标移动的动画效果,之前一直使用angular和react,没怎么接触过vue,先做一个vue的简单例子,然后再整合。

  • 2020-03-23 15:16:30

    import,require具体用法

    import 和 require 是JS模块化编程使用的,是前端开发者们在性能探索中的又一大进步。

  • 2020-03-30 15:37:12

    PM2下使用 npm run 命令

    npm run xxxx 是 node常用的启动方式之一,本文介绍下如何用PM2来实现该方式的启动。 下面是项目的package.json文件部分代码: