Home  >  Article  >  Web Front-end  >  Let’s talk about how Nodejs uses gm and imageMagick to process images

Let’s talk about how Nodejs uses gm and imageMagick to process images

青灯夜游
青灯夜游forward
2022-08-15 19:42:382814browse

NodejsHow to process images? The following article will introduce to you how Nodejs uses gm and imageMagick to process images. I hope it will be helpful to you!

Let’s talk about how Nodejs uses gm and imageMagick to process images

#Recently I am using JS to do fun things and need to process pictures. There are many tutorials on the Internet with various methods, and some methods may not necessarily work. This article will share with you a method verified by the author to use NodeJS to process images.

Installation dependencies

npm i gm

gm is a Node library that provides some JS APIs so that developers can process images. But it relies on GraphicsMagick, or ImageMagick underneath. In fact, gm is the command line for calling those two tools.

In other words, in addition to installing gm, we also need to install either GraphicsMagick or ImageMagick.

ImageMagick

The author is from MacOS and directly chose to install ImageMagick.

Follow the official website command, which only requires 1 line of code (provided you have installed brew on your Mac):

brew install imagemagick --with-webp

Introduce the parameters --with-webp, You can delete it, but if you want to process images in webp format, you must add it.

It is more convenient to use brew. You don’t have to worry about environment variables.

GraphicsMagick

Of course, if you don’t use ImageMagick, you can use GraphicsMagick:

brew install graphicsmagick

Quoting gm

At first I chose to install ImageMagick. When I wrote this, I always got an error:

const gm = require('gm');

gm('图片文件路径').crop(width, height, 0, 0).resize(width2, height2).quality(quality).write('输出文件路径', function (err) {
  if (err) {
    return console.log(err);
  } else {
    console.log('success');
  }
});

If you want to use ImageMagick, the above writing is actually wrong. You should write it like this, clearly. Specify that I want to use ImageMagick Tool:

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

gm('图片文件路径').crop(width, height, 0, 0).resize(width2, height2).quality(quality).write('输出文件路径', function (err) {
  if (err) {
    return console.log(err);
  } else {
    console.log('success');
  }
});

Other functions

Record the common functions of gm for everyone’s memo:

Note: gm can be called in a chain, which is very fun to write. It reads image files from gm(filename), processes them layer by layer, and finally writes to the file.write(filename, callback).

Zoom image

.resize(width, height)

Crop the picture

.crop(width, height, x, y)

Rotate the picture

.rotate(color, deg)

color is the background color (the background color comes in handy if the deg rotation angle is not a multiple of 90 , just use the format '#ededed')

For more node-related knowledge, please visit: nodejs tutorial!

The above is the detailed content of Let’s talk about how Nodejs uses gm and imageMagick to process images. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:juejin.cn. If there is any infringement, please contact admin@php.cn delete