H5:画布Canvas基础知识讲解(二)之插入图像、像素级操作、文字

简介: ​上一节介绍了H5:画布Canvas基础知识讲解(一)之canvas基础、2D context API、路径,接下来继续讲解H5:画布Canvas基础。

插入图像

drawImage方法允许在Canvas中插入其他图像(img和Canvas元素) 。在Opera中可以在Canvas中绘制SVG图形。此方法比较复杂,可以有3个、5个或9个参数:

3个参数:最基本的drawImage使用方法。一个参数指定图像位置,另两个参数设置图像在Canvas中的位置。

5个参数:中级的drawImage使用方法,包括上面所述3个参数,加两个参数指明插入图像宽度和高度 (如果你想改变图像大小)。

9个参数:最复杂drawImage杂使用方法,包含上述5个参数外,另外4个参数设置源图像中的位置和高度宽度。这些参数允许你在显示图像前动态裁剪源图像。

下面是上述三个使用方法的例子:

context.drawImage(img_elem, dx, dy);
  context.drawImage(img_elem, dx, dy, dw, dh);
  context.drawImage(img_elem, sx, sy, sw, sh, dx, dy, dw, dh);
复制代码

可以把上面代码放置在文档head部分中,或者放在外部JavaScript文件中。

像素级操作

2D Context API提供了三个方法用于像素级操作:createImageData,getImageData和putImageData。

ImageData对象保存了图像像素值。每个对象有三个属性: width,height和data。data属性类型为CanvasPixelArray,用于储存width*height*4个像素值。每一个像素 有RGB值和透明度alpha值(其值为0至255,包括alpha在内。)。像素的顺序从左至右,从上到下,按行存储。

来看一个例子:

var imgd = context.createImageData(50,50);
  var pix = imgd.data;
  for (var i = 0; n = pix.length, i < n; i += 4) {
    pix[i  ] = 255;
    pix[i+3] = 127;
  }
  context.putImageData(imgd, 0,0);
复制代码

注意:

不是所有浏览器都实现了createImageData。在支持的浏览器中,需要通过getImageData方法获取ImageData对象。

通过ImageData可以完成很多功能。如可以实现图像滤镜,或可以实现数学可视化 (如分形和其他特效)。来看一个实例:

var imgd = context.getImageData(x, y width, height);
  var pix = imgd.data;
  for (var i = 0, n = pix.length; i < n; i += 4) {
    pix[i  ] = 255 - pix[i  ];
    pix[i+1] = 255 - pix[i+1];
    pix[i+2] = 255 - pix[i+2];
  }
  context.putImageData(imgd,x, y);
复制代码

可以把上面代码放置在文档head部分中,或者放在外部JavaScript文件中。

下一节继续讲H5:画布Canvas基础知识讲解(三)之文字、阴影、颜色渐变。


作者:zhulin1028

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章
|
小程序
uni-app:刷新当前页面
执行这三行代码就可以实现uniapp刷新当前页面。
4738 0
|
JavaScript Windows
Win7内网安装高版本的Node方法,亲测有效node-v16.16.0
Win7内网安装高版本的Node方法,亲测有效node-v16.16.0
2461 1
|
Web App开发 JavaScript 前端开发
安卓webview访问vue工程白屏/无响应/无法加载问题处理
本文目录 1. 问题出现 2. 尝试更换内嵌浏览器 3. 尝试各种babel配置 4. 二分排除法定位问题 5. 模拟器与真机测试还不一样 6. 总结 7. 反思
3335 0
|
搜索推荐 安全 API
uniapp上传图片
uniapp上传图片
306 0
|
存储 数据安全/隐私保护 iOS开发
应用在App Store上被拒重新提交审核流程指南
该文本是关于iOS应用发布的步骤说明
377 2
|
前端开发
类抖音logo的光影之旅:CSS动画效果,让标志更具吸引力!
类抖音logo的光影之旅:CSS动画效果,让标志更具吸引力!
|
Web App开发 JSON 小程序
苹果app开发apple-app-site-association文件配置
apple-app-site-association 是苹果的配置文件,用于建立app和网站关联,支持Universal Links,使点击网站链接能直接打开相应app内部页面。配置文件为JSON格式,需上传至服务器`.well-known`目录或根目录。通过检查三个链接来测试配置,确保Content-Type为`application/json`。成功配置后,点击链接能在iPhone备忘录或Safari中直接唤起app,但可能有24-48小时延迟。
uniapp 制作 wgt 包(用于 app 的热更新)
uniapp 制作 wgt 包(用于 app 的热更新)
1809 0
|
存储 数据安全/隐私保护 开发者
图文详解丨iOS App上架全流程及审核避坑指南
App Store作为苹果官方的应用商店,审核严格周期长一直让用户头疼不已,很多app都“死”在了审核这一关,那我们就要放弃iOS用户了吗?当然不是!本期我们从iOS app上架流程开始梳理,详细了解下iOS app上架的那些事。

热门文章

最新文章