Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. Интерфейсы веб API
  3. HTMLCanvasElement
  4. HTMLCanvasElement.toDataURL()

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

HTMLCanvasElement.toDataURL()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

HTMLCanvasElement.toDataURL() — метод, который возвращаетdata URI изображения вформате, заданном параметромtype (по умолчаниюPNG). Возвращаемое изображение имеетразрешение 96 dpi.

  • Если высота или ширина холста равна0 или большемаксимального размера холста,возвращается строка"data:,".
  • Если запрошенный тип отличается отimage/png, но возвращаемое значение начинается сdata:image/png, то запрошенный тип не поддерживается.
  • Chrome также поддерживает типimage/webp.

Синтаксис

js
canvas.toDataURL(type, encoderOptions);

Параметры

typeНеобязательный

Строка (DOMString), указывающая формат изображения. По умолчанию —image/png.

encoderOptionsНеобязательный

Число (типаNumber) между0 и1, указывающее качество изображения для форматов, использующих сжатие с потерями, таких какimage/jpeg иimage/webp.Если передан невалидный аргумент, то используется значение по умолчанию0.92. Остальные аргументы игнорируются.

Возвращаемое значение

Строка (DOMString), содержащая запрошенныйdata URI.

Исключения

SecurityError

Растровое изображение холста не соответствует источнику; по крайней мере часть его содержимого могла быть загружена с сайта, отличного от того, с которого был загруженсам документ.

Примеры

Возьмём следующий<canvas> элемент:

html
<canvas width="5" height="5"></canvas>

Вы можете получить его data-URL следующим образом:

js
var canvas = document.getElementById("canvas");var dataURL = canvas.toDataURL();console.log(dataURL);// "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNby// blAAAADElEQVQImWNgoBMAAABpAAFEI8ARAAAAAElFTkSuQmCC"

Настройка качества изображения с помощью jpegs

js
var fullQuality = canvas.toDataURL("image/jpeg", 1.0);// data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...9oADAMBAAIRAxEAPwD/AD/6AP/Z"var mediumQuality = canvas.toDataURL("image/jpeg", 0.5);var lowQuality = canvas.toDataURL("image/jpeg", 0.1);

Пример: Динамическое изменение изображений

Вы можете использовать эту технику вместе с событиями мыши, чтобы динамически изменять изображения (оттенки серого или цвет в этом примере):

HTML

html
<img src="myPicture.png" alt="Описание моей картинки" />

JavaScript

js
window.addEventListener("load", removeColors);function showColorImg() {  this.style.display = "none";  this.nextSibling.style.display = "inline";}function showGrayImg() {  this.previousSibling.style.display = "inline";  this.style.display = "none";}function removeColors() {  var aImages = document.getElementsByClassName("grayscale"),    nImgsLen = aImages.length,    oCanvas = document.createElement("canvas"),    oCtx = oCanvas.getContext("2d");  for (    var nWidth, nHeight, oImgData, oGrayImg, nPixel, aPix, nPixLen, nImgId = 0;    nImgId < nImgsLen;    nImgId++  ) {    oColorImg = aImages[nImgId];    nWidth = oColorImg.offsetWidth;    nHeight = oColorImg.offsetHeight;    oCanvas.width = nWidth;    oCanvas.height = nHeight;    oCtx.drawImage(oColorImg, 0, 0);    oImgData = oCtx.getImageData(0, 0, nWidth, nHeight);    aPix = oImgData.data;    nPixLen = aPix.length;    for (nPixel = 0; nPixel < nPixLen; nPixel += 4) {      aPix[nPixel + 2] =        aPix[nPixel + 1] =        aPix[nPixel] =          (aPix[nPixel] + aPix[nPixel + 1] + aPix[nPixel + 2]) / 3;    }    oCtx.putImageData(oImgData, 0, 0);    oGrayImg = new Image();    oGrayImg.src = oCanvas.toDataURL();    oGrayImg.onmouseover = showColorImg;    oColorImg.onmouseout = showGrayImg;    oCtx.clearRect(0, 0, nWidth, nHeight);    oColorImg.style.display = "none";    oColorImg.parentNode.insertBefore(oGrayImg, oColorImg);  }}

Спецификации

Specification
HTML
# dom-canvas-todataurl-dev

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp