html、canvas、视频灰度、反色
效果图:

代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>canvas 视频颜色灰度化,反色</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
#wrap{
border: 1px solid #ccc;
}
#sourcevid{
width: 400px;
height: 400px;
border: 1px solid #ccc;
}
</style>
</head>
<body>
<video id="sourcevid" autoplay="true" loop="true" width="400" height="400">
<source src="vodeo/daxiongtui(1).mp4" type="video/mp4"/>
<source src="vodeo/daxiongtui.ogv" type="video/ogg"/>
</video>
<canvas id="wrap" width="400" height="400">你的浏览器不支持canvas!</canvas>
<script type="text/javascript">
//获取id
var canvas = document.getElementById("wrap");
var ctx = canvas.getContext("2d"); var sourcevid = document.getElementById("sourcevid"); sourcevid.oncanplaythrough = function() { function play() {
//在画布里绘制出sourcevid
ctx.drawImage(sourcevid,0,0); //反色
//getImageData() 复制画布上指定矩形的像素数据
//getImageData() 方法返回 ImageData 对象,该对象拷贝了画布指定矩形的像素数据。
//对于 ImageData 对象中的每个像素,都存在着四方面的信息,即 RGBA 值:
//R - 红色 (0-255)
//G - 绿色 (0-255)
//B - 蓝色 (0-255)
//A - alpha 通道 (0-255; 0 是透明的,255 是完全可见的)
//color/alpha 以数组形式存在,并存储于 ImageData 对象的 data 属性中。 var imageData = ctx.getImageData(0,0,200,400);
var t = imageData.data;
for(var i = 0 ; i < t.length; i += 4) {
t[i] = 255 - t[i];
t[i+1] = 255 - t[i+1];
t[i+2] = 255 - t[i+2];
// t[i+3] = 255;
}
// putImageData() 将图像数据放回画布
ctx.putImageData(imageData,200,0); //灰度
var imageData = ctx.getImageData(0,0,200,400);
var d = imageData.data;//保存的是红绿蓝透明度的通道的值
//console.log(imageData);
for(var i = 0; i < d.length; i += 4) {
//var verage = (d[i] + d[i+1] + d[i+2])/3;
var verage1 = 0.299 * d[i] + 0.587 * d[i+1] + 0.114 * d[i+2]
d[i] = d[i+1] = d[i+2] = verage1;
}
ctx.putImageData(imageData,0,0); window.requestAnimationFrame(play);
}
play();
}
</script>
</body>
</html>
注:本例需在服务器上运行的才能看到效果、视频文件可换成本地视频(HBuilder有集成服务器或者使用wampmanager亦可)
html、canvas、视频灰度、反色的更多相关文章
- canvas简单处理图片(反色处理)
用canvas可以简单地处理图像,比如切割 灰色处理等,今天记下的是图像的反色处理. <!DOCTYPE html> <html> <head> <meta ...
- [js高手之路] html5 canvas系列教程 - 像素操作(反色,黑白,亮度,复古,蒙版,透明)
接着上文[js高手之路] html5 canvas系列教程 - 状态详解(save与restore),相信大家都应该玩过美颜功能,而我们今天要讲的就是canvas强大的像素处理能力,通过像素处理,实现 ...
- canvas 图片反色
代码实例: <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <tit ...
- 前端每日实战:23# 视频演示如何用纯 CSS 创作一个菜单反色填充特效
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览.https://codepen.io/comehope/pen/qYMoPo 可交互视频教程 此视频是 ...
- 在YUV图像上根据背景色实现OSD反色
所谓的OSD其实就是在视频图像上叠加一些字符信息,比如时间,地点,通道号等, 在图像上叠加OSD通常有两种方式: 一种是在前端嵌入式设备上,在图像数据上叠加OSD, 这样客户端这边只需解码显示数据即可 ...
- 如何用纯 CSS 创作一个菜单反色填充特效
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览.https://codepen.io/comehope/pen/qYMoPo 可交互视频教程 ...
- C#开发PACS医学影像处理系统(十八):Dicom使用LUT色彩增强和反色
在医生阅片确诊的过程中,当发线疑似病灶时在灰度显示下有时并不清晰,这时候就需要色彩增强效果来使灰度图像变为彩色图像. LUT可以简单的理解为0-255的颜色映射值,例如:彩虹编码,将其打包成LUT格式 ...
- iOS实现图像的反色,怀旧,色彩直方图效果
反色是与原色叠加可以变为白色的颜色,即用白色(RGB:1.0,1.0,1.0)减去原色的颜色.比如说红色(RGB:1.0,0,0)的反色是青色(0,1.0,1.0).在OPENGL ES中为1. 通过 ...
- php对图片反色处理
今天有个需求用php对图片进行反色,和转灰,之前不知道可不可行,后来看到了imagefilter()函数,用来转灰绰绰有余,好强大: imagefilter($im, IMG_FILTER_GRAYS ...
随机推荐
- js学习进阶-元素获取及样式设置
var imgs = document.querySelectorAll("article img"); 获得article元素的直接或间接子孙的所有img元素, <arti ...
- javase-->基础知识(一)
1.JDK安装和和配置 1)安装jdk1.8版本(不同的平台安装不同的jdk). 2)配置:将.../jdk1.x/bin放到path环境变量的最前面(避免之前配的环境变量干扰). ****** ja ...
- LInux Shell 快捷键
CTRL 键相关的快捷键: Ctrl + a - Jump to the start of the lineCtrl + b - Move back a charCtrl + c - Terminat ...
- 第四课 开发uehtml官网响应式静态页面
概况:整站布局.头部菜单响应式设置.最新消息模块变化.内容模块四三二响应式变化. 伪类选择器: E:nth-of-type(n) 表示E父元素中的第n个字节点,且类型为E E:nth-la ...
- Android在layout xml中使用include
Android include与merge标签使用详解 - shuqiaoniu的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net/shuqiaoniu/article ...
- 【转载】制作一个超精简的WIN7.gho
首先说明一点,这个Resource不是我制作的,Google搜了下GHO镜像文件制作,挺复杂的.如果要从头到尾自己制作GHO文件可以参考: http://baike.so.com/doc/674790 ...
- ZooKeeper基本原理
ZooKeeper简介 ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. ZooKeeper设计目的 1. ...
- 配置比对脚本(python)
# -*- coding: utf- -*- from datetime import * import MySQLdb import sys import time import datetime ...
- PyQt5+Python3.5.2-32bit开发环境搭建
1.基本环境. Window 8.1 64bit Python3.5.2-32bit.exe PyQt5 2.安装python. 去官网下载32位版本的python3.5.2(就是x86那个) 备 ...
- Kafka、RabbitMQ、RocketMQ消息中间件的对比 —— 消息发送性能-转自阿里中间件
引言 分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦.现在开源的消息中间件有很多,前段时间我们自家的产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注. ...