nodejs 对 png 图片的像素级别处理
使用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 操作,可以去看官方的文档,非常详情
nodejs 对 png 图片的像素级别处理的更多相关文章
- canvas学习笔记:canvas对图片的像素级处理--ImageData的应用
学习了canvas的基本绘图功能后,惊喜的发现canvas对图片数据也有相当强大的处理功能,能够从像素级别操作位图,当然[lte ie8]不支持. 主要的函数有三个: ctx.createImageD ...
- 用Delphi直接获取bmp图片的像素
用Delphi直接获取bmp图片的像素,并存储显示出.(此像素主要用在LED上显示).希望高手能给出代码啊!! function getImagePixels(f: string): Integer; ...
- iOS图片的伪裁剪(改变图片的像素值)
0x00 原理 利用一张图片事先画好的图片(以下称为蒙板),盖在要被裁剪的的图片上,然后遍历蒙板上的像素点,修改被裁剪图片对应位置的像素的色值即可得到一些我们想要的不规则图片了(比如人脸) 0x01 ...
- win32加载图片获得像素值
在写光栅渲染器时,需要加载图片获得像素以便进行纹理插值,试了几种方法发现下面这种比价简单,效率也可以接受 Texture2D是我自己定义的类,其中m_pixelBuffer是一个动态二维数组,每个元素 ...
- 精确选择识别png图片有像素的区域(使用方法)
/** * * *---------------------------------------* * | ***精确选择识别png图片有像素的区域*** | * *----------------- ...
- 精确选择识别png图片有像素的区域
/** * * *---------------------------------------* * | ***精确选择识别png图片有像素的区域*** | * *----------------- ...
- div里嵌套了img底部会有白块问题和图片一像素问题解决
div里嵌套了img底部会有白块 因为img默认是按基线(baseline)对齐的.对比一下图片和右边的p, q, y等字母,你会发现这三个字母的“小尾巴”和图片下方的空白一样高.下面这张图中的黑线就 ...
- 验证码识别之w3cschool字符图片验证码(easy级别)
起因: 最近在练习解析验证码,看到了这个网站的验证码比较简单,于是就拿来解析一下攒攒经验值,并无任何冒犯之意... 验证码所在网页: https://www.w3cschool.cn/checkmph ...
- iOS关于图片点到像素转换之杂谈
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 不管是以什么方法生成的图片,是从磁盘上读取的,还是从其他对象中 ...
随机推荐
- vsCode中如何根据屏幕宽度自动换行
在设置中搜索editor.wordWrap 文章来源:外星人来地球 欢迎关注,有问题一起学习欢迎留言.评论
- OpenJudge计算概论-数字求和
/*========================================================= 数字求和 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个 ...
- JAVA关于静态static的面试题
JAVA关于静态static的面试题 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net ...
- 2013年各大小IT公司待遇,绝对真实,一线数据!(初版)
本人西电硕士,根据今年找工作的情况以及身边同学的汇总,总结各大公司的待遇如下,吐血奉献给各位学弟学妹,公司比较全,你想去的公司不在这里面,基本上是无名小公司了:无名小公司有时也很给力哦以下绝对是各大公 ...
- 002-创建型-02-抽象工厂模式(Abstract Factory)
一.概述 抽象工厂模式提供同一个创建一系列相关或相互依赖对象的接口,无须指定它们具体的类 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态.抽象工厂模式是指当有多个抽象角色时,使用的一 ...
- 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_17-身份校验-身份校验过虑器编写
5 身份校验 5.1 需求分析 本小节实现网关连接Redis校验令牌: 1.从cookie查询用户身份令牌是否存在,不存在则拒绝访问 2.从http header查询jwt令牌是否存在,不存在则拒绝访 ...
- java设置北京时间的时区
java设置北京时间的时区 解决方法: 设置北京时间的时区,消除时间差. TimeZone timeZone = TimeZone.getTimeZone("GMT+8"); ...
- Harbor 1.8.0 仓库的安装和使用
安装的先决条件 硬件环境 1.CPU 至少2G,最好4G 2.内存 至少4G,最好8G 3.磁盘 至少40G,最好160G 软件环境 1.docker版本 17.03.0-ce ...
- Python之汉诺塔递归运算
汉诺塔问题是一个经典的问题.汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆 ...
- UI界面测试
概念:指测试用户界面的风格是否满足用户要求.文字是否正确.页面是否美观.文字与图片组合是否完美.操作是否友好等. 1.窗体测试 { 窗体大小. 移动窗体. 缩放窗体. 显示分辨率. 状态栏. 工具栏. ...