Canvas 图片处理

Canvas 可处理的图片源

  1. 通过 Image()创建的对象

  2. 通过 ImageBitmap()创建的对象

  3. dom 元素

  4. dom 元素

  5. dom 元素

Canvas 图片 API

drawImage

获取到图片源后,可以调用这个方法将图片源绘制到 canvas 中

  • drawImage(image, x, y)

image 是 image 或者 canvas 对象,x 和 y 是其在目标 canvas 里的起始坐标。

  • rotate

用于以原点为中心旋转 canvas 画板

  • ImageData

ImageData 对象中存储着 canvas 对象真实的像素数据,它包含以下几个只读属性:

width: 图片宽度,单位是像素 height: 图片高度,单位是像素 data: Uint8ClampedArray 类型的一维数组,包含着 RGBA 格式的整型数据,范围在 0~255

变形

缩放/裁切

  • 缩放 drawImage(image, x, y, width, height)

width 和 height,这两个参数用来控制 当向 canvas 画入时应该缩放的大小

  • 切片 drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)

sx, sy, sWidth, sHeight 是图片源的坐标/宽高信息

dx, dy, dWidth, dHeight 是绘制到 canvas 的坐标/宽高信息

旋转

图片效果

反色

反色即对每个像素点进行如下操作,公式:

JS 代码

去色

去色即将彩色图片变成黑白图片

公式:

JS 代码

单色

单色处理即将图片变为纯 red/green/blue 的纯色图,操作即将其余两色位 置为 0

二值处理

二值处理是非纯黑即纯白,在验证码 ocr 时,常用二值处理先处理,再将图片进行 ocr

算法是给定一个设置值,如果进行去色处理的结果高于这个值,就将颜色设为 255,否则设为 0

最后更新于

这有帮助吗?