Images 服务端 Node.js 轻量级跨平台图片处理库

发布于 2020-09-02 10:15:35 字数 5738 浏览 1529 评论 0

var images = require("images");
images("input.jpg")                     //Load image from file 
                                        //加载图像文件
    .size(400)                          //Geometric scaling the image to 400 pixels width
                                        //等比缩放图像到400像素宽
    .draw(images("logo.png"), 10, 10)   //Drawn logo at coordinates (10,10)
                                        //在(10,10)处绘制Logo
    .save("output.jpg", {               //Save the image to a file, with the quality of 50
        quality : 50                    //保存图片到文件,图片质量为50
    });

Support 支持情况

if node >= 10.x, please install images@latest

PlatformArchitectureNode Version
Windowsx648, 9, 10, 11, 12
OSXX648, 9, 10, 11, 12
Linux*x648, 9, 10, 11, 12

The 32-bit system is not supported for the time being.

if node <= 9.x, please install images@3.1.1

PlatformArchitectureNode Version
Windowsx86 & x640.9.11, 0.10, 0.12, 1, 2, 3, 4, 5, 6, 8, 10
OSXX640.9.11, 0.10, 0.12, 1, 2, 3, 4, 5, 6, 8, 9, 10
Linux*x86 & x640.9.11, 0.10, 0.12, 1, 2, 3, 4, 5, 6, 8, 10

Features 功能特性

  • Lightweight: no need to install any image processing library.
  • 轻量级:无需安装任何图像处理库。
  • Cross-platform: Released a compiled .node file on windows, just download and start.
  • 跨平台:Windows下发布了编译好的.node文件,下载就能用。
  • Easy-to-use: Provide jQuery-like chaining API. Simple and reliable!
  • 方便用:jQuery风格的API,简单可依赖。

Installation 安装

$ npm install images

API 接口

node-images provide jQuery-like Chaining API,You can start the chain like this:
node-images 提供了类似 jQuery 的链式调用AP,您可以这样开始:

/* Load and decode image from file */
/* 从指定文件加载并解码图像 */
images(file)

/* Create a new transparent image */
/* 创建一个指定宽高的透明图像 */
images(width, height)

/* Load and decode image from a buffer */
/* 从Buffer数据中解码图像 */
images(buffer[, start[, end]])

/* Copy from another image */
/* 从另一个图像中复制区域来创建图像 */
images(image[, x, y, width, height])

images(file)

Load and decode image from file
从指定文件加载并解码图像

images(width, height)

Create a new transparent image
创建一个指定宽高的透明图像

images(buffer[, start[, end]])

Load and decode image from a buffer
从Buffer数据中解码图像

images(image[, x, y, width, height])

Copy from another image
从另一个图像中复制区域来创建图像

.fill(red, green, blue[, alpha])

eg:images(200, 100).fill(0xff, 0x00, 0x00, 0.5) Fill image with color
以指定颜色填充图像

.draw(image, x, y)

Draw image on the current image position( x , y )
在当前图像( x , y )上绘制 image 图像

.encode(type[, config])

eg:images("input.png").encode("jpg", {operation:50}) Encode image to buffer, config is image setting.
以指定格式编码当前图像到Buffer,config为图片设置,目前支持设置JPG图像质量
Return buffer
返回填充好的Buffer
Note:The operation will cut off the chain
注意:该操作将会切断调用链
See:.save(file[, type[, config]]) 参考:.save(file[, type[, config]])

.save(file[, type[, config]])

eg:images("input.png").encode("output.jpg", {operation:50}) Encoding and save the current image to a file, if the type is not specified, type well be automatically determined according to the file, config is image setting. eg: { operation:50 }
编码并保存当前图像到 file ,如果type未指定,则根据 file 自动判断文件类型,config为图片设置,目前支持设置JPG图像质量

.size([width[, height]])

Get size of the image or set the size of the image,if the height is not specified, then scaling based on the current width and height
获取或者设置图像宽高,如果height未指定,则根据当前宽高等比缩放

.resize(width[, height])

Set the size of the image,if the height is not specified, then scaling based on the current width and height
设置图像宽高,如果height未指定,则根据当前宽高等比缩放, 默认采用 bicubic 算法。

.width([width])

Get width for the image or set width of the image
获取或设置图像宽度

.height([height])

Get height for the image or set height of the image
获取或设置图像高度

images.setLimit(width, height)

Set the limit size of each image
设置库处理图片的大小限制,设置后对所有新的操作生效(如果超限则抛出异常)

images.setGCThreshold(value)

Set the garbage collection threshold
设置图像处理库自动gc的阈值(当新增内存使用超过该阈值时,执行垃圾回收)

images.getUsedMemory()

Get used memory (in bytes)
得到图像处理库占用的内存大小(单位为字节)

images.gc()

Forced garbage collection
强制调用V8的垃圾回收机制

github 地址:https://github.com/zhangyuanwei/node-images


2022年10月15日19:07:01 更新

使用一段时间发现了一些问题:

  • 生成的缩略简直惨不忍睹,锯齿很明显,无论怎么设置图片质量都没用
  • gif 动图无法处理

以上两个弊端无法解决,我最终选用 ImageMagick 生成缩略图。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

浪漫人生路

文章 0 评论 0

620vip

文章 0 评论 0

羞稚

文章 0 评论 0

走过海棠暮

文章 0 评论 0

你好刘可爱

文章 0 评论 0

陌若浮生

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文