- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用JavaScript进行基本图形操作与处理1.图像数据的相关接口由于HTML5引入了canvas标签,这大大简化了JavaScript处理图像的工作。通过canvas,JavaScript可以对图像进行像素级的操作,甚至还可以直接处理图像的二进制原始数据,这为图像的签名技术提供了支持。另外canvas还提供了常用的图像格式转换功能,可以使用JavaScript简单快捷地更改图像的编码方式。出于安全考虑,浏览器通常不允许处理跨域图像,但利用特殊的手段是可以突破这一限制的。解决处理跨域图像出现的安全警告的方法是使用CORS(Cross-Origin Resource Sharing),具体可以参加/TR/cors/。利用FileReader和canvas相配合,可以读取本地图像文件,比如我们有如下HTML代码:canvasid=myCanvas抱歉,您的浏览器还不支持canvas。/canvasinputtype=fileid=myFile/这两行HTML代码包含一个id为myCanvas的canvas画布,还包含一个id为myFile的文件选择控件,我们将通过文件选择控件为用户提供选择本地文件的接口,然后利用canvas画布为JavaScript提供图像处理的接口。下面通过JavaScript为这两个元素绑定事件。为了方便引用,先用两个变量来存储这两个元素:varmyCanvas = document.getElementById(myCanvas);varmyFile = document.getElementById(myFile);当用户选定一个文件时,我们就应开始通过FileReader读取文件数据,为此监视myFile的onchange事件,并构造FileReader:file.onchange = function(event) {varselectedFile = event.target.files[0];var reader = newFileReader();reader.onload = putImage2Canvas;reader.readAsDataURL(selectedFile);}在这段代码中,onchange事件被激活时会传递一个event参数给处理函数,event的target子属性是一个描述当前文件选择控件的对象,其files属性是一个描述用户已选文件信息的数组。files是数组类型是因为HTML5支持一次选择多个文件,如果文件选择控件没有开启多选模式,那么此数组只有一个元素。接下来创建了一个FileReader对象,将其保存在reader中。reader.onload事件定义了文件加载完成后的操作,reader.readAsDataURL将文件内容读取成Data URL。接下来编写putImage2Canvas函数,这个函数用来将FileReader读取的数据放入canvas中供JavaScript处理:function putImage2Canvas(event) {varimg = newImage();img.src = event.target.result;img.onload = function(){myCanvas.width = img.width;myCanvas.height = img.height;var context = myCanvas.getContext(2d);context.drawImage(img, 0, 0);varimgdata = context.getImageData(0, 0, img.width, img.height);// 处理imgdata }}event是reader.onload传递的参数,event.target.result是FileReader读取的结果,由于之前我们将文件内容以Data URL的方式读取,所以可以直接将读取结果作为src创建图像对象。当图像创建完毕后,img.onload事件被激活,此时我们将canvas的尺寸设置成图像的尺寸,然后通过drawImage将图像画在画布上,最后通过getImageData获取图像像素数据供JavaScript处理。下面我们来详细了解下drawImage和getImageData这两个方法,这两个方法将会在后面的章节中一直用到,是JavaScript处理图像用到的最基本的方法。drawImage有三种用法,第一种是只指定图片的绘制位置:context.drawImage(img, x, y);这也是本节开始的代码实例中用到的使用方法,这种方法会将图片左上角置于坐标相对于画布的(x, y)点上,如果画布尺寸足够则画出整个图像,否则将超出画布的部分舍弃,如图1-1
您可能关注的文档
- 生理学基础_第一章_选编.ppt
- 生命体征的观察和护理选编.pptx
- 生命周期评价LCA选编.pptx
- 生态系统健康与评价选编.pptx
- 生物传感器在食品检测中的应用(双语)选编.pptx
- 生物多样性的基本选编.pptx
- 生物多样性对环境的影响及其保护选编.pptx
- 生物高考选择题专项选编.docx
- 生物学科第二部分选编.ppt
- 施工工艺样板示例选编.pptx
- 新解读《JB_T 14282 - 2022养鸡设备 行车喂料机》最新解读.docx
- 新解读《JB_T 14438 - 2023电永磁机械调速器》最新解读.docx
- 新解读《JB_T 9791-2022农业机械 万向节传动轴防护罩》最新解读.docx
- 新解读《JB_T 10704-2023建筑施工机械与设备 混凝土布料机》最新解读.docx
- 新解读《JB_T 14530 - 2023汽车覆盖件冲模 标识设计规范》最新解读.docx
- 新解读《JB_T 14579 - 2023滚动轴承 球面滚子》最新解读.docx
- 新解读《JB_T 14165-2022泵给排水系统能效限定值及能效等级》最新解读.docx
- 新解读《JB_T 14232 - 2023动力转向器铸铁件》最新解读.docx
- 新解读《JB_T 14261 - 2022电能路由器 试验方法》最新解读.docx
- 新解读《JB_T 14284 - 2022马铃薯打秧机》最新解读.docx
文档评论(0)