Nodejs下mac图像处理模块【gm】安装及图片等比例缩小

Nodejs下mac图像处理模块【gm】安装及图片等比例缩小

###简介 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:就这么多了,希望对新手能有所帮助,大神请略过。


4 回复

Nodejs下mac图像处理模块【gm】安装及图片等比例缩小

简介

gm 是对 GraphicsMagickImageMagick 这两个开源图片处理的C库进行封装。这两个库具备跨平台、效率高、支持图片格式多、API相对丰富的特点,应用场景十分广泛。

安装

要使用 gm,必须在本地安装上述库中的一个。关于这两个库的源码安装方法有很多地方可以查到,这里不做详解。由于我目前开发一直使用mac且对Linux使用不是很熟悉,因此选择最简单的安装方式:使用pkg安装包。这里提供了一个 ImageMagick 的安装包链接,下载后可以轻松完成安装。

接下来是安装 gm 模块:

sudo npm install gm

使用

基本使用请参考 gm的GitHub主页,相信大家可以很快上手。以下是一些示例代码帮助大家更好地理解和使用 gm

示例代码:等比例缩小图片

假设我们有一个名为 input.jpg 的图片,我们想将其等比例缩小到宽度为240像素,高度则根据原始图片的比例自动生成。

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

// 等比例缩小图片
gm('/path/to/input.jpg')
  .resize(240) // 只指定宽度,高度会按比例调整
  .write('/path/to/output.jpg', function(err) {
    if (!err) {
      console.log('图片已成功缩小并保存');
    } else {
      console.error('发生错误:', err);
    }
  });

在这个例子中,resize(240) 方法指定了输出图片的宽度为240像素,而高度会根据原始图片的比例自动调整,以确保图片不会失真。

gm引用小小心得

按照我上面的方法,有些开发者可能会遇到问题,比如报错:

var width = size.width;
TypeError: Cannot read property 'width' of undefined

出现这种问题的原因可能是你安装的是 ImageMagick 版本。因此,在引用时需要添加 imageMagick: true 配置项:

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

这样就可以避免上述错误,并正确地使用 gm 模块了。

希望这些信息对你有所帮助!


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

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

Nodejs下mac图像处理模块【gm】安装及图片等比例缩小

简介

gm 是对 GraphicsMagickImageMagick 这两个开源图片处理C库的封装。这两个库具有跨平台、高效、支持多种图片格式和API丰富的特点,应用场景广泛。

安装

要使用 gm,必须在本地安装其中一个库。关于这两个库的源码安装方法有很多地方可以查到,这里不再详述。由于我在mac上开发且对Linux不太熟悉,所以选择了最简单的安装方式:通过pkg安装包。这里提供一个 ImageMagick 的安装包链接 可以下载。下载之后可以轻松完成 ImageMagick 的安装。

接下来安装 gm 模块:

sudo npm install gm

使用

基本使用请参考 gm 的 GitHub 主页,相信很快就能上手。这里为你提供一些具体的使用示例:

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

gm('/path/to/my/img.jpg')
  .resize(240)  // 只指定宽度,高度会自动等比例缩小
  .noProfile()  // 移除EXIF数据
  .write('/path/to/resize.png', function (err) {
    if (!err) console.log('done');
  });

在这段代码中,resize(240) 方法用于调整图片尺寸,只指定宽度为240像素,高度会自动按比例缩小。如果想指定高度,可以只设置高度而忽略宽度。

引用小小心得

有些用户可能会遇到错误:

var width = size.width;
                    ^
TypeError: Cannot read property 'width' of undefined

这通常是因为在引用 gm 模块时没有正确配置。正确的引用方式如下:

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

这样就可以避免上述错误了。

希望这些信息对你有所帮助!

回到顶部