nodejs图片处理工具gm用法小结

Node.js图片处理工具gm用法小结

简介

GraphicsMagick (GM) 是一个命令行图象处理程序,所以需要在终端下运行,较为麻烦。而 gm 模块就是对 GraphicsMagick 程序进行封装,使其可以通过 Node.js 调用,在 Node.js 中操作图片变得异常方便。

安装

首先,需要在本地安装 GraphicsMagick 或者 ImageMagick。以 Ubuntu 为例,可通过以下命令进行安装:

sudo apt-get install graphicsmagick

接下来,使用 npm 安装 gm 模块:

npm install gm

基本用法

打开图片

打开图片需要使用 gm() 方法,该方法可以接受一张图片的路径作为参数,例如:

var gm = require('gm');
gm('/path/to/image.jpg')

调整大小

调整大小可以使用 resize() 方法,该方法接受参数为需要调整的宽度、高度、以及选项。例如:

gm('/path/to/image.jpg')
.resize(100, 100)
.write('/path/to/resize.jpg', function(err) {
  if (!err) console.log('done');
});

裁剪

裁剪可以使用 crop() 方法,该方法接受参数为需要裁剪的宽度、高度、x 坐标以及 y 坐标。例如:

gm('/path/to/image.jpg')
.crop(100, 100, 0, 0)
.write('/path/to/crop.jpg', function(err) {
  if (!err) console.log('done');
});

变换

变换可以使用 rotate() 方法,该方法接受参数为需要旋转的角度以及背景颜色。例如:

gm('/path/to/image.jpg')
.rotate('green', 45)
.write('/path/to/rotate.jpg', function(err) {
  if (!err) console.log('done');
});

叠加

叠加可以使用 composite() 方法,该方法接受参数为需要叠加的图片路径、以及叠加的位置。例如:

gm('/path/to/image.jpg')
.composite('/path/to/overlay.png', 10, 10)
.write('/path/to/composite.jpg', function(err) {
  if (!err) console.log('done');
});

保存

最后,需要使用 write() 方法来保存处理后的图片,该方法接受参数为保存路径以及回调函数。

示例

以下是两个基于 gm 的示例:

1. 图片水印

gm('/path/to/image.jpg')
.font("Helvetica.ttf", 12)
.drawText(10, 20, "Watermark")
.write('/path/to/watermark.jpg', function (err) {
  if (!err) console.log('done');
});

2. 打马赛克

gm('/path/to/image.jpg')
.region(130, 165, 200, 200)
.blur(30, 5)
.write('/path/to/blur.jpg', function (err) {
  if (!err) console.log('done');
});

结论

gm 是一个非常好用的 Node.js 图片处理模块,可以很方便地进行各种图片操作。需要注意的是,由于其底层使用 GraphicsMagick,因此在使用时需要安装 GraphicsMagick 或者 ImageMagick。同时,由于 gm 模块较为底层,因此需要一定的代码基础。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs图片处理工具gm用法小结 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 利用node实现一个批量重命名文件的函数

    实现一个批量重命名文件的函数,可以通过Node.js提供的fs核心模块完成。下面是详细的实现攻略: 1. 引入fs模块 const fs = require(‘fs’); 2. 定义重命名函数 function batchRenameFiles(dirPath, oldNameRegex, newNameString) { fs.readdir(dirPat…

    node js 2023年6月8日
    00
  • js中的正则表达式入门(大量实例代码)

    接下来我会详细讲解“js中的正则表达式入门(大量实例代码)”的攻略。 什么是正则表达式? 正则表达式是一种用于匹配字符串的模式,是一种强大而灵活的工具。它们由普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)组成。举个例子,用正则表达式来匹配邮箱中的@符号: /@/ 这个正则表达式表示匹配字符串中的@符号。 正则表达式语法 正则表达式语法十…

    node js 2023年6月8日
    00
  • Javascript入门学习第六篇 js DOM编程第1/2页

    在这篇文章中,我们会学习Javascript中的DOM编程,DOM是指文档对象模型(Document Object Model),代表了HTML或XML文档的树形结构。使用DOM编程可以实现在页面中动态修改、添加或删除元素等效果。 DOM介绍 什么是DOM? DOM 是表示文档的方式,使得程序可以改变文档的内容、样式、或结构。 浏览器中的DOM 浏览器把 H…

    node js 2023年6月8日
    00
  • JSON基本语法及与JavaScript的异同实例分析

    JSON基本语法及与JavaScript的异同实例分析 什么是JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,由Douglas Crockford在2001年提出。它基于JavaScript语法,但是是一种独立于语言的数据格式,可以被多种编程语言使用和解析。 JSON数据格式也易于人阅读和编写,这使得它成…

    node js 2023年6月8日
    00
  • D3.js 实现带伸缩时间轴拓扑图的示例代码

    下面是“D3.js 实现带伸缩时间轴拓扑图的示例代码”的完整攻略。 1.介绍 D3.js是一个数据驱动的JavaScript库,非常适合用于动态生成交互式数据可视化。在这篇攻略中,我们将学习如何使用D3.js创建带有伸缩时间轴的拓扑图。 2.准备工作 在开始创建拓扑图之前,您需要以下几个工具: 最新版本的D3.js HTML、CSS和JavaScript编辑…

    node js 2023年6月8日
    00
  • Node.js创建一个Express服务的方法详解

    下面为你详细讲解创建一个Express服务的方法。 步骤一:安装Node.js和Express 在开始创建一个Express服务之前,你需要确保已经安装了Node.js和Express。如果还没有安装,可以前往官方网站进行下载和安装。 步骤二:创建项目文件夹 在创建Express服务之前,需要先创建项目文件夹。可以在终端中使用以下命令创建: mkdir my…

    node js 2023年6月8日
    00
  • 基于JS实现一个小型编译器

    以下是基于JS实现一个小型编译器的完整攻略,主要分为以下几个步骤: 1. 定义语法规则 在实现编译器前,我们需要定义一套自己的语法规则。在本次示例中,我们定义一个类似于计算器的语法规则,包含四则运算、括号和变量赋值等功能。 program ::= statement* statement ::= expression | assignment express…

    node js 2023年6月8日
    00
  • Nodejs实现的一个简单udp广播服务器、客户端

    下面我会为您详细讲解“Nodejs实现的一个简单udp广播服务器、客户端”的完整攻略。 概述 本攻略主要介绍如何使用Nodejs实现一个简单的UDP广播服务器和客户端。 UDP协议简介 UDP是一种无连接的通信协议,发送数据时不需要建立连接。它的特点是传输快速,但是数据传输不可靠,可能会出现数据丢失和乱序。 UDP服务器和客户端 UDP服务器和客户端之间的通…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部