html5<canvas操作像素之反相、窗帘、模糊特效>
来源:互联网 发布:xbox软件是什么 编辑:程序博客网 时间:2024/06/10 07:48
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<style>
canvas{
background:#eee;
}
</style>
<script>
window.onload = function(){
var canvas = document.getElementById('canvas');
var cobj = canvas.getContext('2d');//获取绘图环境
var img = document.getElementById('img');
cobj.drawImage(img,0,0,200,240);//画图片
var imgData=cobj.getImageData(0,0,200,240);//得到图片信息
//复制出同样规格,颜色为红色的图片
// for (var i=0; i<imgData.width*imgData.height; i++) {
// imgData.data[i*4+0]=255;
// imgData.data[i*4+1]=0;
// imgData.data[i*4+2]=0;
// imgData.data[i*4+3]=255;
// }
//反向
// for (var i=0; i<imgData.width*imgData.height; i++) {
// imgData.data[i*4+0] = 255 - imgData.data[i*4+0];
// imgData.data[i*4+1] = 255 - imgData.data[i*4+1];
// imgData.data[i*4+2] = 255 - imgData.data[i*4+2];
// imgData.data[i*4+3] = imgData.data[i*4+3];
// }
// cobj.putImageData(imgData,200,240);//复制出新的图片
// fanxiang(imgData);//调用反向函数
// menlian(imgData,4);//调用门帘函数
vague(imgData,1000);//调用模糊函数
//封装反向函数
function fanxiang(imgData){
for (var i=0; i<imgData.width*imgData.height; i++) {
imgData.data[i*4+0] = 255 - imgData.data[i*4+0];
imgData.data[i*4+1] = 255 - imgData.data[i*4+1];
imgData.data[i*4+2] = 255 - imgData.data[i*4+2];
imgData.data[i*4+3] = imgData.data[i*4+3];
}
cobj.putImageData(imgData,200,240);
}
//门帘效果
function menlian(imgData,num){
for (var i=0; i<imgData.width*imgData.height; i++) {
if(i%num == 0){
imgData.data[i*4+0] = 0;
imgData.data[i*4+1] = 0;
imgData.data[i*4+2] = 0;
imgData.data[i*4+3] = 0;
}
}
cobj.putImageData(imgData,200,240);
}
//模糊效果
function vague(imgData,num){
for(var j=0;j<num;j++){
for (var i=0; i<imgData.width*imgData.height; i++) {
imgData.data[i*4+0] = (imgData.data[(i-1)*4+0]+imgData.data[i*4+0]+imgData.data[(i+1)*4+0])/3;
imgData.data[i*4+1] = (imgData.data[(i-1)*4+1]+imgData.data[i*4+1]+imgData.data[(i+1)*4+1])/3;
imgData.data[i*4+2] = (imgData.data[(i-1)*4+2]+imgData.data[i*4+2]+imgData.data[(i+1)*4+2])/3;
imgData.data[i*4+3] = imgData.data[i*4+3];
}
}
cobj.putImageData(imgData,200,240);
}
}
</script>
</head>
<body>
<canvas id="canvas" width=500 height=500>
</canvas>
<img src="./1.jpg" height="330" width="268" id="img" hidden/>
</body>
<html lang="en">
<head>
<meta charset="utf-8">
<style>
canvas{
background:#eee;
}
</style>
<script>
window.onload = function(){
var canvas = document.getElementById('canvas');
var cobj = canvas.getContext('2d');//获取绘图环境
var img = document.getElementById('img');
cobj.drawImage(img,0,0,200,240);//画图片
var imgData=cobj.getImageData(0,0,200,240);//得到图片信息
//复制出同样规格,颜色为红色的图片
// for (var i=0; i<imgData.width*imgData.height; i++) {
// imgData.data[i*4+0]=255;
// imgData.data[i*4+1]=0;
// imgData.data[i*4+2]=0;
// imgData.data[i*4+3]=255;
// }
//反向
// for (var i=0; i<imgData.width*imgData.height; i++) {
// imgData.data[i*4+0] = 255 - imgData.data[i*4+0];
// imgData.data[i*4+1] = 255 - imgData.data[i*4+1];
// imgData.data[i*4+2] = 255 - imgData.data[i*4+2];
// imgData.data[i*4+3] = imgData.data[i*4+3];
// }
// cobj.putImageData(imgData,200,240);//复制出新的图片
// fanxiang(imgData);//调用反向函数
// menlian(imgData,4);//调用门帘函数
vague(imgData,1000);//调用模糊函数
//封装反向函数
function fanxiang(imgData){
for (var i=0; i<imgData.width*imgData.height; i++) {
imgData.data[i*4+0] = 255 - imgData.data[i*4+0];
imgData.data[i*4+1] = 255 - imgData.data[i*4+1];
imgData.data[i*4+2] = 255 - imgData.data[i*4+2];
imgData.data[i*4+3] = imgData.data[i*4+3];
}
cobj.putImageData(imgData,200,240);
}
//门帘效果
function menlian(imgData,num){
for (var i=0; i<imgData.width*imgData.height; i++) {
if(i%num == 0){
imgData.data[i*4+0] = 0;
imgData.data[i*4+1] = 0;
imgData.data[i*4+2] = 0;
imgData.data[i*4+3] = 0;
}
}
cobj.putImageData(imgData,200,240);
}
//模糊效果
function vague(imgData,num){
for(var j=0;j<num;j++){
for (var i=0; i<imgData.width*imgData.height; i++) {
imgData.data[i*4+0] = (imgData.data[(i-1)*4+0]+imgData.data[i*4+0]+imgData.data[(i+1)*4+0])/3;
imgData.data[i*4+1] = (imgData.data[(i-1)*4+1]+imgData.data[i*4+1]+imgData.data[(i+1)*4+1])/3;
imgData.data[i*4+2] = (imgData.data[(i-1)*4+2]+imgData.data[i*4+2]+imgData.data[(i+1)*4+2])/3;
imgData.data[i*4+3] = imgData.data[i*4+3];
}
}
cobj.putImageData(imgData,200,240);
}
}
</script>
</head>
<body>
<canvas id="canvas" width=500 height=500>
</canvas>
<img src="./1.jpg" height="330" width="268" id="img" hidden/>
</body>
</html>
阅读全文
0 0
- html5<canvas操作像素之反相、窗帘、模糊特效>
- html5<canvas操作像素实例之渐变>
- html5<canvas操作像素之添加杂色,动态倒影逐行显示>
- HTML5之Canvas 2D入门4 - 直接操作像素
- html5 Canvas画图3:1像素线条模糊问题
- canvas像素级操作实现各种滤镜之高斯模糊
- canvas像素级操作实现各种滤镜之高斯模糊
- canvas像素级操作实现滤镜之反色滤镜、黑白滤镜
- canvas像素级操作实现滤镜之反色滤镜、黑白滤镜
- html5<canvas操作文字实例之转盘>
- html5 canvas 粒子特效
- 解决html5<canvas>标签像素变大,图片变模糊的情况
- canvas 像素操作
- canvas操作图片像素
- html5<canvas转换之万花筒>
- html5 canvas drawImage图片模糊
- html5<canvas操作图像实例之弹性照片墙>
- HTML5 canvas图片爆炸特效
- phpcms v9 创建模块
- cpp——类——VBTBL
- Linux下管道的实现机制
- 字符串格式化方式及递归
- 141. Linked List Cycle
- html5<canvas操作像素之反相、窗帘、模糊特效>
- cpp——类——RTTI
- Linux命令行修改IP、网关、DNS的方法
- Mac10.12允许任何来源如何显示
- 数据异常排查系统化方法
- linux设备驱动归纳总结(三):4.ioctl的实现
- (c++)orm框架简单对比
- 详解设计模式——装饰器模式
- opengles实现场景控制