Canvas в HTML5.изображение toDataURL() не имеет цвета фона
при использовании .toDataURL()
метод HTML5 <canvas>
элемент background-color
свойство элемента не применяется к изображению.
вопрос
это произошло потому, что background-color
на самом деле не является частью canvas
, но стиль DOM? Если да, или что-то еще, что может быть обходным путем для этого?
Скрипка
скрипку, чтобы играть с здесь. Строка base64 регистрируется в приставка.
дополнительная информация
холст создается из svg
использование https://code.google.com/p/canvg/
2 ответов
вы правы, что на самом деле это не часть данных изображения, а только часть стиля. Самый простой способ обойти это - просто нарисовать прямоугольник перед рисованием SVG:
var canvas = document.getElementById('test');
var ctx = canvas.getContext('2d');
ctx.fillStyle = 'green';
ctx.fillRect(0, 0, canvas.width, canvas.height);
другим подходом может быть создание фиктивного холста и копирование на него исходного содержимого холста.
//create a dummy CANVAS
destinationCanvas = document.createElement("canvas");
destinationCanvas.width = srcCanvas.width;
destinationCanvas.height = srcCanvas.height;
destCtx = destinationCanvas.getContext('2d');
//create a rectangle with the desired color
destCtx.fillStyle = "#FFFFFF";
destCtx.fillRect(0,0,srcCanvas.width,srcCanvas.height);
//draw the original canvas onto the destination canvas
destCtx.drawImage(srcCanvas, 0, 0);
//finally use the destinationCanvas.toDataURL() method to get the desired output;
destinationCanvas.toDataURL();