<canvas> 元素的方法

除了CanvasRenderingContext2D对象提供的方法,<canvas>元素本身也有自己的方法。

HTMLCanvasElement.toDataURL()

<canvas>元素的toDataURL()方法,可以将 Canvas 数据转为 Data URI 格式的图像。

  1. canvas.toDataURL(type, quality)

toDataURL()方法接受两个参数。

  • type:字符串,表示图像的格式。默认为image/png,另一个可用的值是image/jpeg,Chrome 浏览器还可以使用image/webp
  • quality:浮点数,0到1之间,表示 JPEG 和 WebP 图像的质量系数,默认值为0.92。

该方法的返回值是一个 Data URI 格式的字符串。

  1. function convertCanvasToImage(canvas) {
  2. var image = new Image();
  3. image.src = canvas.toDataURL('image/png');
  4. return image;
  5. }

上面的代码将<canvas>元素,转化成PNG Data URI。

  1. var fullQuality = canvas.toDataURL('image/jpeg', 0.9);
  2. var mediumQuality = canvas.toDataURL('image/jpeg', 0.6);
  3. var lowQuality = canvas.toDataURL('image/jpeg', 0.3);

上面代码将<canvas>元素转成高画质、中画质、低画质三种 JPEG 图像。

HTMLCanvasElement.toBlob()

HTMLCanvasElement.toBlob()方法用于将<canvas>图像转成一个 Blob 对象,默认类型是image/png。它的使用格式如下。

  1. // 格式
  2. canvas.toBlob(callback, mimeType, quality)
  3. // 示例
  4. canvas.toBlob(function (blob) {...}, 'image/jpeg', 0.95)

toBlob()方法可以接受三个参数。

  • callback:回调函数。它接受生成的 Blob 对象作为参数。
  • mimeType:字符串,图像的 MIMEType 类型,默认是image/png
  • quality:浮点数,0到1之间,表示图像的质量,只对image/jpegimage/webp类型的图像有效。

注意,该方法没有返回值。

下面的例子将<canvas>图像复制成<img>图像。

  1. var canvas = document.getElementById('myCanvas');
  2. function blobToImg(blob) {
  3. var newImg = document.createElement('img');
  4. var url = URL.createObjectURL(blob);
  5. newImg.onload = functio () {
  6. // 使用完毕,释放 URL 对象
  7. URL.revokeObjectURL(url);
  8. };
  9. newImg.src = url;
  10. document.body.appendChild(newImg);
  11. }
  12. canvas.toBlob(blobToImg);