📜  从 jimp js 获取缓冲区 - Javascript (1)

📅  最后修改于: 2023-12-03 15:36:13.802000             🧑  作者: Mango

从 Jimp JS 获取缓冲区 - JavaScript

Jimp JS 是一个纯 JavaScript 写的图像处理库,支持图像裁剪、缩放、旋转、加文字等操作。如果你需要将处理好的图像输出为二进制数据,可以使用 Jimp 的 getBuffer() 方法获取图像的缓冲区数据。

安装 Jimp JS

你需要先安装 Jimp JS,这可以通过 npm 包管理器完成:

npm install jimp
创建 Jimp 图像

要获取 Jimp 图像的缓冲区数据,首先需要创建一个 Jimp 图像实例。可以从本地文件、缓冲区数据、URL 地址等方式创建 Jimp 图像。例如,以下代码从本地文件创建一个 640x480 的图像:

const Jimp = require('jimp');

Jimp.read('test.png', (err, img) => {
  if (err) throw err;
  
  img.resize(640, 480) // 缩放到 640x480
    .quality(80) // 降低图像质量,减小文件大小
    .getBuffer(Jimp.MIME_PNG, (err, buffer) => {
      if (err) throw err;
      
      // 处理缓冲区数据
    })
});
获取 Jimp 图像缓冲区数据

在 Jimp 实例对象上调用 getBuffer() 方法可以获取图像的缓冲区数据,此方法需要传递两个参数:

  • MIME 类型:表示图像数据的格式类型,如 'image/jpeg''image/png''image/bmp' 等。
  • 回调函数:用于处理获取到的缓冲区数据,其接收两个参数:errbuffer,分别表示错误对象和缓冲区数据。

以下是一个获取 PNG 格式图像缓冲区数据的示例:

img.getBuffer(Jimp.MIME_PNG, (err, buffer) => {
  if (err) throw err;

  // 处理缓冲区数据
});

使用同样的方式可以获取其他格式类型的图像缓冲区数据,如 JPEG 和 BMP:

// 获取 JPEG 格式缓冲区数据
img.getBuffer(Jimp.MIME_JPEG, (err, buffer) => {
  if (err) throw err;

  // 处理缓冲区数据
});

// 获取 BMP 格式缓冲区数据
img.getBuffer(Jimp.MIME_BMP, (err, buffer) => {
  if (err) throw err;

  // 处理缓冲区数据
});
使用 Jimp 缓冲区数据

获取到的缓冲区数据可以用于写入本地文件、上传到云存储、从浏览器下载等操作。以将图像缩放并保存为本地文件为例:

const fs = require('fs'); // Node.js 内置模块

img.resize(640, 480) // 缩放到 640x480
  .quality(80)
  .getBuffer(Jimp.MIME_PNG, (err, buffer) => {
    if (err) throw err;

    fs.writeFile('output.png', buffer, err => {
      if (err) throw err;
      console.log('File saved!');
    });
  });

以上代码将缩放后的 PNG 格式图像保存为本地文件 output.png

结论

从 Jimp JS 获取缓冲区数据是将图像处理后输出的重要步骤,在处理完图像后,你可以将缓冲区数据用于硬盘文件的保存、网络传输、浏览器下载等操作。