# 像素操作
到目前为止,我们尚未深入了解 Canvas 画布真实像素的原理,事实上,你可以直接通过 ImageData 对象操纵像素数据,直接读取或将数据数组写入该对象中。
# ImageData 对象
ImageData对象中存储着 canvas 对象真实的像素数据,它包含以下几个只读属性:
- width
- height
- data
# 创建一个 ImageData 对象
去创建一个新的,空白的 ImageData对象,你应该会使用createImageData() 方法。
const myImageData = ctx.createImageData(width, height);
const myImageData = ctx.createImageData(anotherImageData);
上面代码创建了一个新的具体特定尺寸的 ImageData对象。所有像素被预设为透明黑。
# 得到场景像素数据
为了获得一个包含画布场景像素数据的 ImageData 对像,你可以用 getImageData() 方法
const myImageData = ctx.getImageData(left, top, width, height);
# 在场景中写入像素数据
ctx.putImageData(myImageData, dx, dy);
# 保存图片
HTMLCanvasElement 提供一个 toDataURL() 方法,此方法在保存图片的时候非常有用。
canvas.toDataURL();
canvas.toDataURL('image/png');
// 默认设定。创建一个 PNG 图片。
canvas.toDataURL('image/jpeg', quality);
// 创建一个 JPG 图片。你可以有选择地提供从 0 到 1 的品质量
你也可以从画布中创建一个Blob对像
canvas.toBlob(callback, type, encoderOptions)