nodejs 圖片的像素級別處理


使用node對圖片的像素進行處理

這里使用常見的圖片灰度處理為例子:

這里用到一個 canvas 的庫,本質上是調用的 c++ ,通過 c++ 調用顯卡渲染。

可以做到和前端的 canvas 一樣的api處理,但是效果更好。

 

 

npm i canvas

  

如果發現報錯,以管理員權限打開 cmd

//先運行一下這個命令
npm install --global --production windows-build-tools
//安裝的好像是一個python運行環境,中間有一個綠色的框框,結尾是python
//提示+ windows-build-tools@5.2.2
// updated 1 package in 107.732s說明安裝成功

//然后運行命令 ,好像是全局安裝這個包,英語小白,看不懂
npm install -g node-gyp

//最后會提示一堆中文,===創建代碼=== === 生成代碼===復制啥的===說明安裝成功

//然后把已經下載的node-modules文件刪除,從新執行命令
npm install canvas  //安裝依賴就搞定了

  

 

一個簡單的例子:圖片灰度處理

const { createCanvas, loadImage } = require('canvas')
const fs = require("fs");

async function main(){
	const myimg = await loadImage('./image/b.png');
	const canvas = createCanvas(myimg.width, myimg.height)
	const ctx = canvas.getContext('2d');
	ctx.drawImage(myimg,0,0);
	let imgData = ctx.getImageData(0,0,myimg.width, myimg.height);
	let data = imgData.data;
	for(let i = 0; i < data.length; i++){
		var avg=(data[i]+data[i+1]+data[i+2])/3;
		//var avg = data[i]* 0.3 + data[i+1]* 0.59 + data[i+2]* 0.11
		data[i] = avg;
		data[i+1] = avg;
		data[i+2] = avg;
	}
	ctx.putImageData(imgData,0,0);
	canvas.createPNGStream().pipe(fs.createWriteStream("./out.png"));
	
}

main();

  

詳細的 API 操作,可以去看 官方的文檔,非常詳情

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM