最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs處理圖片的幾種方法總結(jié)(使用sharp、jimp及webconvert)

 更新時間:2023年12月01日 09:42:48   作者:小果運維  
這篇文章主要給大家介紹了關(guān)于nodejs處理圖片的幾種方法,文中介紹的方法分別是sharp、jimp及webconvert,在開發(fā)過程中我們有時候需要對圖片進行處理,給一個圖片添加水印、多個圖片合成為一圖片等操作,需要的朋友可以參考下

使用sharp

Sharp是一款快速高效的Node.js圖片處理庫,支持圖片格式轉(zhuǎn)換、尺寸調(diào)整、壓縮、裁剪、旋轉(zhuǎn)、水印等功能。以下是使用Sharp庫的基本步驟:

1. 安裝Sharp庫

安裝Sharp庫可以使用npm命令:

npm install sharp

2. 調(diào)用Sharp庫

在代碼中調(diào)用Sharp庫,可以先引入Sharp庫:

const sharp = require('sharp');

3. 圖片格式轉(zhuǎn)換

利用Sharp庫,可以將圖片格式轉(zhuǎn)換為其它格式,例如將JPEG圖片轉(zhuǎn)換為PNG圖片:

sharp('input.jpg')
  .toFormat('png')
  .toFile('output.png', (err, info) => {
   // 處理錯誤或完成后的回調(diào)函數(shù)
});

4. 尺寸調(diào)整

利用Sharp庫,可以調(diào)整圖片的尺寸,例如將圖片寬度調(diào)整為800像素:

sharp('input.png')
  .resize(800, null)
  .toFile('output.png', (err, info) => {
    // 處理錯誤或完成后的回調(diào)函數(shù)
  });

5. 壓縮

利用Sharp庫,可以壓縮圖片文件大小,例如將圖片文件壓縮為50%:

sharp('input.png')
  .jpeg({ quality: 50 })
  .toFile('output.png', (err, info) => {
    // 處理錯誤或完成后的回調(diào)函數(shù)
  });

6. 裁剪

利用Sharp庫,可以裁剪圖片,例如將圖片裁剪為400x400像素:

sharp('input.png')
  .resize(800, 800)
  .extract({ width: 400, height: 400, left: 200, top: 200 })
  .toFile('output.png', (err, info) => {
    // 處理錯誤或完成后的回調(diào)函數(shù)
  });

7. 旋轉(zhuǎn)

利用Sharp庫,可以旋轉(zhuǎn)圖片,例如將圖片逆時針旋轉(zhuǎn)90度:

sharp('input.png')
  .rotate(-90)
  .toFile('output.png', (err, info) => {
    // 處理錯誤或完成后的回調(diào)函數(shù)
  });

8. 添加水印

利用Sharp庫,可以在圖片上添加水印,例如將文字“Hello World”添加到圖片左上角:

sharp('input.png')
  .resize(800, null)
  .overlayWith(Buffer.from('Hello World'), { gravity: 'northwest' })
  .toFile('output.png', (err, info) => {
    // 處理錯誤或完成后的回調(diào)函數(shù)
  });

以上是使用Sharp庫的基本步驟,具體使用可以根據(jù)具體需求進行調(diào)整。

使用jimp

Jimp 是一個用于 Node.js 的圖片處理庫,它支持讀取、操作和保存多種格式的圖片,比如 PNG、JPEG、BMP、GIF 等等。以下是使用 Jimp 的基本步驟:

1. 安裝 Jimp

通過 npm 命令安裝 Jimp:

npm install jimp

2. 引入 Jimp

在代碼中引入 Jimp 模塊:

const Jimp = require('jimp');

3. 讀取圖片

使用 Jimp.read() 方法讀取圖片,并在回調(diào)函數(shù)中處理圖片:

Jimp.read('path/to/image.png', (err, image) => {
  if (err) throw err;
  // 對圖片進行操作
});

4. 操作圖片

Jimp 支持多種操作,比如調(diào)整大小、裁剪、旋轉(zhuǎn)、縮放、濾鏡等等。以下是一些常見的操作示例:

// 調(diào)整大小
image.resize(200, 200)

// 裁剪
image.crop(10, 10, 100, 100)

// 旋轉(zhuǎn)
image.rotate(45)

// 縮放
image.scale(0.5)

// 濾鏡
image.greyscale().blur(5)

5. 保存圖片

使用 Jimp.write() 方法保存圖片:

image.write('path/to/new/image.png', (err) => {
  if (err) throw err;
  console.log('Image saved.');
});

####完整代碼示例
const Jimp = require('jimp');

Jimp.read('path/to/image.png', (err, image) => {
  if (err) throw err;
  
  image.resize(200, 200)
       .crop(10, 10, 100, 100)
       .rotate(45)
       .scale(0.5)
       .greyscale()
       .blur(5)
       .write('path/to/new/image.png', (err) => {
         if (err) throw err;
         console.log('Image saved.');
       });
});

使用webconvert

webpconvert 是一個基于 Node.js 的處理 WebP 圖像的工具。使用它能夠?qū)?JPEG、PNG、GIF 等圖片格式轉(zhuǎn)換為 WebP 圖片格式,以實現(xiàn)更好的圖片壓縮并提高網(wǎng)站性能。以下是使用 webpconvert 的方法:

1. 安裝 Node.js 和 npm(如果你還沒有安裝的話)。

2. 打開終端或命令行界面,使用 npm 安裝 webpconvert:

npm install -g webp-convert

3. 轉(zhuǎn)換一張圖片格式為 WebP 格式的命令行語法如下:

npm install -g webp-convert

例如,在當(dāng)前目錄下有一張名為 "example.png" 的 PNG 圖片,將它轉(zhuǎn)換為 WebP 格式并輸出到 "example.webp",可以使用以下命令:

webpconvert example.png example.webp

4. 根據(jù)需要,可以添加一些選項來調(diào)整轉(zhuǎn)換的質(zhì)量和大小,例如:

- 調(diào)整輸出圖片質(zhì)量等級:使用 "-q" 或 "--quality" 選項,并指定一個介于 0 到 100 之間的數(shù)字。

webpconvert example.png example.webp -q 80

- 調(diào)整輸出圖片大?。菏褂?"-r" 或 "--resize" 選項,并指定一個百分比或像素值。

webpconvert example.png example.webp -r 50%

- 轉(zhuǎn)換圖片并自動替換原文件(需使用 "-o" 或 "--overwrite" 選項)。

webpconvert example.png -o

更多選項和用法可以通過運行 "webpconvert --help" 命令來查看。

使用Cropper.js

Cropper.js 是一款基于 HTML5 canvas 元素的圖片裁剪工具,可以讓用戶自由選擇圖片的大小和位置。Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環(huán)境,能夠在服務(wù)器端運行 JavaScript 代碼。在 Node.js 中使用 Cropper.js 需要先安裝相關(guān)依賴和配置服務(wù)器。

安裝 Cropper.js

可以使用 npm 命令來安裝 Cropper.js:

npm install cropperjs --save

安裝完成后,就可以在項目中引入 Cropper.js 了:

const Cropper = require('cropperjs');

配置服務(wù)器

為了在 Node.js 中使用 Cropper.js,需要配置服務(wù)器,讓服務(wù)器能夠訪問圖片文件??梢允褂?express 框架來創(chuàng)建服務(wù)器:

const express = require('express');
const app = express();

app.use(express.static('public'));

app.listen(3000, () => {
  console.log('Server started on port 3000.');
});

上面的代碼創(chuàng)建了一個名為 app 的 express 應(yīng)用,將項目根目錄中的 public 文件夾設(shè)置為靜態(tài)文件夾,用于存放圖片文件。服務(wù)器啟動后,可以在瀏覽器中訪問 ```http://localhost:3000``` 查看是否配置成功。

使用 Cropper.js

下面是使用 Cropper.js 對圖片進行裁剪的示例代碼:

const express = require('express');
const app = express();
const path = require('path');

app.use(express.static('public'));

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'index.html'));
});

app.post('/crop', (req, res) => {
  const cropper = new Cropper(req.body.src, {
    aspectRatio: 1 / 1,
    crop(event) {
      console.log(event.detail.x);
      console.log(event.detail.y);
      console.log(event.detail.width);
      console.log(event.detail.height);
    },
  });

  cropper.getCroppedCanvas().toBlob((blob) => {
    res.send(blob);
  });
});

app.listen(3000, () => {
  console.log('Server started on port 3000.');
});

這段代碼創(chuàng)建了一個名為 cropper 的 Cropper 實例,用于對圖片進行裁剪。其中,```req.body.src``` 表示要裁剪的圖片路徑,```aspectRatio``` 表示裁剪框的長寬比,```crop``` 是一個回調(diào)函數(shù),用于在裁剪框發(fā)生變化時輸出裁剪框的坐標(biāo)和大小。

在裁剪完成后,使用 ```getCroppedCanvas()``` 方法將裁剪后的圖片輸出為一個 canvas 元素,再使用 ```toBlob()``` 方法將 canvas 元素轉(zhuǎn)換成 Blob 對象,最后將 Blob 對象通過 HTTP 響應(yīng)發(fā)送給客戶端。

注意事項

在使用 Cropper.js 時需要注意以下幾點:

1. 圖片必須先加載完成后才能進行裁剪,否則會出現(xiàn)錯誤;

2. 裁剪后的圖片會通過 HTTP 響應(yīng)發(fā)送給客戶端,需要設(shè)置正確的 MIME 類型;

3. Cropper.js 依賴 HTML5 的 canvas 元素,不支持 IE8 及以下的瀏覽器。

總結(jié)

到此這篇關(guān)于nodejs處理圖片的幾種方法的文章就介紹到這了,更多相關(guān)nodejs處理圖片方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • nodejs提示:cross-device link not permitted, rename錯誤的解決方法

    nodejs提示:cross-device link not permitted, rename錯誤的解決方法

    這篇文章主要給大家介紹了關(guān)于nodejs提示:cross-device link not permitted, rename錯誤的解決方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用nodejs具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • JavaScript第三方庫delegates的用法詳解

    JavaScript第三方庫delegates的用法詳解

    delegates?庫為?JavaScript?社區(qū)提供了一種高效的方式來聲明對象之間的委托關(guān)系,讓代碼結(jié)構(gòu)更加清晰,減少不必要的重復(fù),并提高可維護性,本文將詳細介紹如何在?Node.js?項目中使用?delegates?庫進行高級委托,需要的朋友可以參考下
    2024-01-01
  • Node.js如何響應(yīng)Ajax的POST請求并且保存為JSON文件詳解

    Node.js如何響應(yīng)Ajax的POST請求并且保存為JSON文件詳解

    這篇文章主要介紹了關(guān)于Node.js是如何響應(yīng)Ajax的POST請求并且保存為JSON文件的相關(guān)資料,文中介紹的很詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • package.json與package-lock.json創(chuàng)建及使用詳解

    package.json與package-lock.json創(chuàng)建及使用詳解

    這篇文章主要為大家介紹了package.json與package-lock.json創(chuàng)建及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Node.js刷新session過期時間的實現(xiàn)方法推薦

    Node.js刷新session過期時間的實現(xiàn)方法推薦

    下面小編就為大家?guī)硪黄狽ode.js刷新session過期時間的實現(xiàn)方法推薦。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • 淺析node.js的模塊加載機制

    淺析node.js的模塊加載機制

    這篇文章主要介紹了淺析node.js的模塊加載機制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 使用node-canvas在服務(wù)端渲染echarts圖表解析

    使用node-canvas在服務(wù)端渲染echarts圖表解析

    這篇文章主要介紹了使用node-canvas在服務(wù)端渲染echarts圖表解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Node server生成Swagger接口文檔步驟詳解

    Node server生成Swagger接口文檔步驟詳解

    本文介紹使用NodeJs搭建的后端server快速生成Swagger接口文檔的技巧,本文有詳細的步驟講解,通過代碼示例給大家介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-01-01
  • nodejs實現(xiàn)的一個簡單聊天室功能分享

    nodejs實現(xiàn)的一個簡單聊天室功能分享

    這篇文章主要介紹了nodejs實現(xiàn)的一個簡單聊天室功能分享,本文使用了express和socket.io兩個庫結(jié)合實現(xiàn),需要的朋友可以參考下
    2014-12-12
  • nodejs mysql 實現(xiàn)分頁的方法

    nodejs mysql 實現(xiàn)分頁的方法

    本篇文章主要介紹了nodejs mysql 實現(xiàn)分頁的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

额济纳旗| 天长市| 本溪| 永嘉县| 巫山县| 大竹县| 乐昌市| 邵阳县| 宣恩县| 长沙县| 齐齐哈尔市| 永济市| 农安县| 山西省| 平武县| 东海县| 和平区| 赫章县| 珲春市| 安国市| 凌云县| 喀喇沁旗| 乌恰县| 远安县| 武强县| 长寿区| 洪洞县| 延川县| 抚远县| 通海县| 同江市| 沂南县| 雷波县| 满城县| 仙游县| 广汉市| 托克逊县| 宁乡县| 蓬溪县| 英吉沙县| 锡林浩特市|