###简介
gm 是对GraphicsMagick 和imagemagick这两个开源图片处理的c库封装。这两个库具备跨平台、效率高、支持图片格式多、API相对丰富的特点,应用场景十分广泛。
###安装
要使用gm,必须在本地安装以上库中一个。关于这两个库的源码安装方法有很多地方可以查到,这里不做详解。由于自己目前开发一直使用mac加之对linux使用不是很熟,所以选择了最懒的安装方式:pkg安装包,这里提供imagemagick的安装包可以找到。下载之后十分轻松的就完成了imagemagick安装工作。
接下来是熟悉的 sudo npm install gm
。
###使用
基本使用请移步gm的github主页,相信大家很快能够上手。这里为大家献上一点小小的干货。
gm的github主页上面有这段代码:
// resize and remove EXIF profile data
gm('/path/to/my/img.jpg')
.resize(240, 240)
.noProfile()
.write('/path/to/resize.png', function (err) {
if (!err) console.log('done');
});
其中的resize(240, 240)
是将图片压缩到指定的大小,(240,240)就是最后这张图片的大小,两个240分别是宽度和高度。当我们要生成原图的缩略图的时候会用到以上这个api,如果我们想要实现等比例缩放是不是有去先拿到原图的宽和高,再把得到的值作为这里的参数。其实不用,我们只需要手动指定一个宽度,另外一个参数不指定就可以了,它自动按照指定的宽度等比例缩小图片。就上面的代码,我们只要指定一个240就行了resize(240)
####gm引用小小心得 按照我上面的方法,有些人可能要吐槽说不管用,会报错
var width = size.width;
^
TypeError: Cannot read property 'width' of undefined
其实这个问题很简单,因为我安装的是imagemagick。所以,在引用的时候应该这样:
var gm = require('gm').subClass({ imageMagick : true });
这样就不会报错了。
ps:就这么多了,希望对新手能有所帮助,大神请略过。
好顶赞,这样的干货文章居然没人顶? 谢谢楼主
:+1:
有了gm
这个库操作imageMagick
方便多了.