您现在的位置是:网站首页> 编程资料编程资料
HTML5组件Canvas实现图像灰度化(步骤+实例效果)HTML5 绘制图像(上)之:关于canvas元素引领下一代web页面的问题Html5实现如何在两个div元素之间拖放图像HTML5之SVG 2D入门3—文本与图像及渲染文本介绍HTML5 用动画的表现形式装载图像
2021-09-01
1298人已围观
简介 HTML5, 原来如此神奇。程序在google浏览器中测试通过,感兴趣的朋友可以参考本文讲解的HTML5组件Canvas实现图像灰度化的具体步骤,希望对你有所帮助
新建一个html页面,在body tag之间加入
复制代码
代码如下:添加一段最简单的JavaScript 脚本
复制代码
代码如下:window.onload = function() {
var canvas = document.getElementById("myCanvas");
// TODO: do something here
}
从Canvas对象获取绘制对象上下文Context的代码如下:
复制代码
代码如下:var context = canvas.getContext("2d");
在html页面中加入一幅图像的html代码如下
复制代码
代码如下:
从html img对象中获取image 对象的javascript代码如下:
复制代码
代码如下:var image = document.getElementById("imageSource");
将得到的图像绘制在Canvas对象中的代码如下:
复制代码
代码如下:context.drawImage(image, 0, 0);
从Canvas对象中获取图像像素数据的代码如下:
复制代码
代码如下:var canvasData = context.getImageData(0, 0, canvas.width, canvas.height);
读取像素值与实现灰度计算的代码如下:
复制代码
代码如下:for ( var x = 0; x < canvasData.width; x++) {
for ( var y = 0; y < canvasData.height; y++) {
// Index of the pixel in the array
var idx = (x + y * canvasData.width) * 4;
var r = canvasData.data[idx + 0];
var g = canvasData.data[idx + 1];
var b = canvasData.data[idx + 2];
// calculate gray scale value
var gray = .299 * r + .587 * g + .114 * b;
// assign gray scale value
canvasData.data[idx + 0] = gray; // Red channel
canvasData.data[idx + 1] = gray; // Green channel
canvasData.data[idx + 2] = gray; // Blue channel
canvasData.data[idx + 3] = 255; // Alpha channel
// add black border
if(x < 8 || y < 8 || x > (canvasData.width - 8) || y > (canvasData.height - 8))
{
canvasData.data[idx + 0] = 0;
canvasData.data[idx + 1] = 0;
canvasData.data[idx + 2] = 0;
}
}
}
其中计算灰度公式为 gray color = 0.299 × red color + 0.578 × green color + 0.114 * blue color
读取出来的像素值顺序为RGBA 分别代表red color, green color, blue color, alpha channel
处理完成的数据要重新载入到Canvas中。代码如下:
context.putImageData(canvasData, 0, 0);
程序最终的效果如下:
完全源代码如下:
复制代码
代码如下:Hello World!

代码中的文件可以替换任意你想要看到的图片文件
HTML5, 原来如此神奇。程序在google浏览器中测试通过,
最后的忠告,千万不要在本地尝试运行上面的代码,google浏览器的安全检查会自动阻止从浏览器中读写非domain的文件
最好在tomcat或者任意个web container的server上发布以后从google浏览器查看效果即可。
相关内容
- 基于IE10/HTML5 开发html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- IE10 Error.stack 让脚本调试更加方便快捷html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- Javascript 高级手势使用介绍html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- 基于Modernizr 让网站进行优雅降级的分析html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- 用HTML5实现网站在windows8中贴靠的方法html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- html5+css3实现一款注册表单实例基于HTML5+CSS3实现的会员登录/注册表单切换特效源码css3实现简单游戏登录注册表单页面特效源码CSS3登录注册表单滑动切换特效源码jQuery+CSS3实现简洁登录注册表单动画切换特效源码jQuery+CSS3节点接触形式带有UI设计体感的注册表单html5+css3+jQuery实现现代感的时尚web注册表单效果纯CSS实现交互式注册表单代码
- 程序设计HTML5 Canvas API 突袭HTML5之Javascript API扩展1—Web Worker异步执行及相关概述突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述html5中几个不容错过的api或者tips小结HTML5中5个简单实用的APIHTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电5 个强大的HTML5 API 函数推荐
- html5与css3小应用html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- 如何让IE9以下版本(ie6/7/8)认识html5元素HTML5之HTML元素扩展(上)—新增加的元素及使用概述让IE6支持HTML5元素的方法检测浏览器是否支持html5视频的代码几个解决兼容IE6\7\8不支持html5标签的几个方法html5 canvas-1.canvas介绍(hello canvas)html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式input file上传文件样式支持html5的浏览器解决方案让IE支持HTML5的方法IE支持HTML5的解决方法
- html5 拖拽上传图片实例演示html5拖拽排序多图片上传插件特效源码HTML5 拖拽批量上传文件的示例代码html5实现多图片预览上传及点击可拖拽控件html5使用Drag事件编辑器拖拽上传图片的示例代码HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)HTML5 canvas实现移动端上传头像拖拽裁剪效果结合html5+nodejs+express实现拖拽上传的功能HTML5拖拽文件到浏览器并实现文件上传下载功能代码HTML5拖拽文件上传的示例代码
