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

yizhihongxing

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打造微信个人号机器人的方法示例”的完整攻略。 1. 认识微信个人号机器人 微信个人号机器人,是指通过编写程序,让微信个人号能够自动化地进行某些操作或提供某些服务,从而达到自动化处理的效果。常见的微信个人号机器人实现方式有网页版微信、itchat等。 2. 准备工作 在开始编写微信个人号机器人之前,需要完成以下准备工作: 微信个人号。如果暂时没…

    node js 2023年6月8日
    00
  • nodejs 子进程正确的打开方式

    下面是关于nodejs子进程正确的打开方式的完整攻略。 1. 为什么需要子进程? nodejs是单线程的,也就是说在运行过程中只有一个执行上下文。这意味着在执行某些耗时的操作时会导致后续操作被阻塞,降低应用程序的性能。而通过创建子进程,可以在不影响主进程的情况下在子进程中执行耗时操作。 2. 如何正确打开子进程? 在nodejs中可以通过child_proc…

    node js 2023年6月8日
    00
  • 快速掌握Node.js中setTimeout和setInterval的使用方法

    以下是“快速掌握Node.js中setTimeout和setInterval的使用方法”的完整攻略: 一、介绍 在 Node.js 中,可以使用 setTimeout 或 setInterval 实现定时器的功能。setTimeout 用来设定一个定时器,在指定的时间间隔后执行一次指定的函数,而 setInterval 则用于重复执行函数。本篇攻略将详细讲解…

    node js 2023年6月8日
    00
  • node将对象转化为query的实现方法

    将对象转化为query是在前端或后台请求时常见的操作,Node.js提供了将对象转化为query的实现方式。下面是完整攻略: 使用querystring模块 querystring模块提供了将对象转化为query的方法stringify()和将query转化为对象的方法parse()。 将对象转化为query: const querystring = req…

    node js 2023年6月8日
    00
  • nodejs代码执行绕过的一些技巧汇总

    标题:Node.js代码执行绕过的一些技巧汇总 一、概述 Node.js是一款非常流行的JavaScript运行环境,但在代码执行过程中可能也会出现漏洞使得攻击者可以执行一些不受欢迎的代码。本文将探讨几种绕过代码执行漏洞的技巧。 二、技巧汇总 绕过输入过滤 当从前端获取用户输入时,很重要的一步就是对数据进行输入检查。但只是检查数据的类型是不够的,因为攻击者可…

    node js 2023年6月8日
    00
  • Node.js实现文件上传的示例

    下面我将为你介绍一下“Node.js实现文件上传的示例”的完整攻略。 什么是文件上传 文件上传是指将本地的文件上传到服务器上的过程。在Web开发中经常要用到文件上传,比如用户上传头像、PDF文件以及其他文档等。 Node.js实现文件上传的示例 Node.js可以很方便地实现文件上传,需要用到第三方模块formidable。下面是实现文件上传的步骤: 步骤1…

    node js 2023年6月8日
    00
  • Node.js服务端实战之服务启动过程详解

    当我们启动一个Node.js的服务端应用程序时,其实是在服务器上启动了一个Node.js进程。我们接下来的过程就是对这个进程的启动过程进行详细的分析。 1. Node.js 进程运行环境 在启动 Node.js 进程之前,需要先对运行环境进行设置和检查。Node.js 进程的运行环境主要包括以下几方面: 操作系统版本 CPU 架构 Node.js 版本 可以…

    node js 2023年6月8日
    00
  • Node.js中的模块机制学习笔记

    Node.js中的模块机制是其核心特性之一,它提供了一种方便、模块化的方式来组织代码,并将其打包成可复用的模块。本文将介绍Node.js中的模块机制,包括如何创建模块、如何导出和引用模块等内容。 模块的创建 在Node.js中创建一个模块非常简单,只需要在一个文件中定义一个函数、变量、类或对象即可。例如,下面是一个定义在“myModule.js”文件中的模块…

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