Помимо метода getImageData
, вы можете использовать canvas.toDataURL()
для получения PNG в кодировке URL-адреса данных. Если вам нужно сериализовать в строку, это избавит вас от необходимости преобразовывать необработанные данные в строку вручную. Вы можете десериализовать, создав изображение и установив src в URL-адрес данных, а затем вытащив его на холст.
[Отредактировано для учета асинхронной загрузки (предложено olliej).]
function serialize(canvas) {
return canvas.toDataURL();
}
function deserialize(data, canvas) {
var img = new Image();
img.onload = function() {
canvas.width = img.width;
canvas.height = img.height;
canvas.getContext("2d").drawImage(img, 0, 0);
};
img.src = data;
}
Если я правильно помню, некоторые старые версии Safari и, возможно, Opera не поддерживают toDataURL
, но более поздние версии поддерживают.