mac下图像处理模块【gm】安装及图片等比例缩小
发布于 8 年前 作者 yidahis 5537 次浏览 最后一次编辑是 6 年前

###简介 gm 是对GraphicsMagickimagemagick这两个开源图片处理的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:就这么多了,希望对新手能有所帮助,大神请略过。

2 回复

好顶赞,这样的干货文章居然没人顶? 谢谢楼主

:+1: 有了gm这个库操作imageMagick方便多了.

回到顶部