前端基础_像素的处理

news2024/11/18 14:01:10

像素的处理

在HTML5中使用canvas API所能够做到的图像处理技术中,还有一个更让人惊讶的技术就是像素处理技术。使用canvas API能够获取图像中的每一个像素,然后得到该像素颜色的rgb值或rgba值。

使用图形上下文对象的getImageData方法来获取图像中的像素,该方法的定义如下。

var imagedata = context.getImageData(sx,sy,sw,sh);
该方法使用4个参数,sx、sy分别表示所获取区域的起点横坐标、起点纵坐标,sw、sh分别表示所获取区域的宽度和高度。

Imagedata变量是一个CanvasPixelArray对象,具有height、width、data等属性。data属性是一个保存像素数据的数组,内容类似于“[r1,g1,b1,a1, r2,g2,b2,a2, r3,g3,b3,a3,…]”,其中,r1,g1,b1,a1分别为第一个像素的红色值、绿色值、蓝色值、透明值;r2,g2,b2,a2分别为第二个像素的红色值、绿色值、蓝色值、透明值、依次类推。data.length为所取得像素的数量。
使用canvas API获取图像中所有像素的方法代码如下。

var context = canvas.getContext('2d');
    var image = new Image();
    image.onload = function()
    {
    var.imagedata;
    context.drawImage(image,0,0);
    imagedata = context.getImageData(0,0,image.width,image.height);
    };

取得了这些像素以后,就可以对这些像素进行处理了,例如可以进行蒙版处理,面部识别等较复杂的图像处理操作。

【例17.26】下面给出一个用canvas API将图像进行反相操作的实例。

所谓的反相操作就是调整反转图像中的颜色。在对图像进行反相时,通道中每个像素的亮度值都会转换为256级颜色值标度上相反的值。例如,原图像中值为255的像素会被转换为0,值为5的像素会被转化为250。该实例中在得到像素数组后,将该数组中每个像素的颜色进行了反相操作后的图像重新绘制在画布上。该方法的定义如下。

context.putImageData(imagedata,dx,dy[,dirtyX,dirtyY,dirtyWidth, dirtyHeight]);

该方法使用7个参数,imagedata为前面所述的像素数组,dx、dy分别表示重绘图像的起点横坐标和起点纵坐标,后面dirtyX、dirtyY、dirtyWidth、dirtyHeight这4个参数为可选参数,给出一个矩形的起点横坐标、起点纵坐标、宽度与高度,如果加上这4个参数,则只绘制像素数组中这个矩形范围内的图像。

https://www.bilibili.com/video/BV1kR4y167Cp/?spm_id_from=333.999.0.0&vd_source=a7816e3b2a3a67ac39dc87f6bf92421cicon-default.png?t=M85Bhttps://www.bilibili.com/video/BV1kR4y167Cp/?spm_id_from=333.999.0.0&vd_source=a7816e3b2a3a67ac39dc87f6bf92421c

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/111225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker安装Nginx 反向代理服务器

前端代码扔在服务器上怎么运行,首先安装Nginx,这里我用Docker安装Nginx 文章目录一、安装nginx docker镜像1、 获取nginx官方镜像2、查看镜像库3、宿主机创建好要挂载的目录4、启动一个不挂载的容器5、配置文件挂载到宿主机6、停止/删除容器7、查看宿主机…

Kaggle手写识别-卷积神经网络Top6%-代码详解

目录 1. Introduction 简介 2. Data preparation 数据准备 2.1 Load data 加载数据 2.2 Check for null and missing values 检查空值和缺失值 2.3 Normalization 规范化 2.4 Reshape 重塑 2.5 Label encoding 标签编码 2.6 Split training and valdiation set 拆分训…

阳康,但没恢复...

这几天真的是被新冠教育了… 我是上周五就开始有症状了,刚开始因为看了太多小感冒、没流感厉害、几天就康复的言论,我以为应该很快就能好,再加上全过程一直没发烧还暗自窃喜:这玩意不过如此嘛。 没想到病毒很快教我重新做人了&a…

代码随想录训练营第15天

题目:二叉树的最大深度 递归法:后序遍历。具体思想, 终止条件是如果指针指向了空(也就是此时是叶子结点),那么返回0。然后根据左右中的递归顺序去调用函数(并且保存这次的左右子树的深度&#…

矽昌--Wireless配置简述

Wireless配置简述 1 编译 1.1 首次编译 ​ 如果是第一次编译时就需要添加wifi模块,请检查所需编译版型的配置,配置位于openwrt-18.06/target/linux/siflower/ 文件夹下,例如sf19a28_ac28_fullmask_def.config为ac28版型的配置。 查看配置并…

截至2022年12月共计451个信息安全国家标准汇总

写在前面 早年刚参加信息安全工作更多的学点皮毛技术,到处找安全工具,跟踪poc,拿到一个就全网扫一遍,从来没有想过,系统化的安全工作应该怎样搞?我做的工作在安全体系中处于哪个阶段? 后来有机会做企业安全建设&…

计网第二章.物理层

以下是湖科大计算机网络公开课的笔记: 1. 物理层的基本概念 物理层是解决在各种传输媒体上传输比特0和1的问题。 像用双绞线还是光纤或同轴电缆、接线器形状、尺寸、引脚数目、电压范围、某一电平的电压表示何种意义… 物理层为数据链路层屏蔽了各种传输媒体的差…

React学习32(深浅克隆之Immutable.js)

Immutable.js github地址:https://github.com/immutable-js/immutable-js 介绍 每次修改一个immutable对象时都会创建一个新的不可变的对象,在新对象上操作并不会影响到原 对象的数据,那Immutable这个库的实现是深拷贝还是浅拷贝&#xff…

【数据结构】优先级队列(堆)与PriorityQueue

目录 一、堆 二、Java里的集合类PriorityQueue 1、优先级队列的概念 2、构造方法 3、常用方法 1.入队offer 2.出队poll 3.获取队首元素peek 4.扩容机制 4、 注意事项 三、实现大根堆 1、准备字段 2、创建大根堆 3、offer 4、poll 5、peek 一、堆 如果有一个关键…

Selenium WebDriver定位策略(一)

WebDriver中使用的定位策略列表: 下面以百度搜索输入框为例进行讲解 1、按ID定位策略 通过元素的id属性来定位,前提:元素必须有id属性 driver.find_element_by_id("kw")2、按名称查找策略 通过元素的name属性来定位,前提&…

Go语言设计与实现 -- 关键字for和range

如果我们查看汇编代码的话,可以发现,经过优化的for-range循环的汇编代码和普通for的结构相同。也就是说,使用for-range的控制结构最终也会被Go语言编译器换成普通的for循环。 现象提出 现象1:循环永动机 func main() {arr : []…

如何在anaconda中配置graphviz包

文章目录GraphViz简介一:安装graphviz二:配置环境变量三:检测Graphviz是否配置成功。四:安装graphviz包GraphViz简介 graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言):dot作为脚本语言…

android apk 目录结构

APK的目录结构 更改APK的后缀后,可以看到APK的组成如下: assets 其中assets中存放静态资源。 Res res中存放静态资源。 与assets不同之处,res文件夹下的所有文件会生成资源Id.lib 包括依赖的jar包库,so文件等。 so文件是利…

GD32F450以太网(2-2): PHY芯片IP101GR介绍

PHY芯片IP101GR 文章目录PHY芯片IP101GR1. 预备知识2. IP101GR简介3. IP101GR基于RMII接口的PCB设计重点解析3.1 时钟设置3.2. led灯设计3.3. PHY芯片地址设置4. pcb设计5. 寄存器描述6. 附加:IP101GR和GD32F450引脚连接情况1. 预备知识 接上文 《GD32F450以太网(…

液晶OLED接口MIPI之DSI协议学习

文章目录一、概念介绍MIPI----MIPI联盟发起的为移动应用处理器制定的开放标准MIPI-DSI---Display Serial Interface 2定义了处理器和显示模组之间的高速串行接口DCS---Display Command Set 显示命令集合(MIPI-DSI的command模式使用通用标准命令)DSC---Di…

字符串函数剖析(3)---strstr函数

1.strstr函数的巧妙 – 查找子字符串 1.1模拟实现strstr函数 strstr函数:在一个字符串中查找子串 学习新函数时,先去c库查找该函数的相关资料,更加助于你的学习 const char * strstr ( const char * str1, const char * str2 );先看函数的…

测开工具:spring boot 实现同步数据库表结构(持续更新)

一、使用场景 一个项目,有多套开发环境。有一套标准的数据库,不同的开发环境,有各自的一套数据库。 标准数据库的表结构经常发生变化,不同的开发环境中的数据库,需要与标准数据库的表结构保持一致。当标准数据库表结…

HNU编译原理实验一cminus_compiler-2022-fall

前言:实验不是很难,主要考察正则表达式部分 lab1实验报告实验要求 根据cminux-f的词法补全lexical_analyer.l文件,完成词法分析器,能够输出识别出的token,type ,line(刚出现的行数),pos_start(该行开始位置…

[机缘参悟-95] :不同人生、社会问题的本质

事情的本质是物极必反(轮回、周期) 社会的本质是优胜劣汰(迭代、发展) 道德的本质是伦理秩序(未定、秩序) 战争的本质是资源占用(弱肉、强食) 商业的本质是价值交换 金钱的本质…

基于JAVA SpringBoot+ JWT+Redis的ERP系统,VUE+Element-UI 前后端分离的Saas平台

项目简介 简云Saas平台 基于SpringBoot2.2.0, Mybatis, JWT, Redis, VUEElement-UI 的前后端分离的Saas平台管理系统 在线报表开发 在线表单设计 工作流设计 自定义打印模板定义 **产品分二个版本: 开源版本(包含了系统基础架构在线表单设计). 此版本代码完全开源ERP版本…