// Добавил функцию к кнопке
var buttonConvert = document.getElementById("convertBtn");
// Нахожу svg и в Canvas засовываю
buttonConvert.onclick = function svgToCanvas(){
// Select the first svg element
var svg = d3.select("svg")[0][0],
img = new Image(),
serializer = new XMLSerializer(),
svgStr = serializer.serializeToString(svg);
img.src = 'data:image/svg+xml;base64,'+window.btoa(svgStr);
//Делаю для себя проверку что все работает, вижу что элемент добавился
var canvas = document.createElement("canvas");
document.body.appendChild(canvas);
//saveAs(canvas, "chart.png");
canvas.width = width;
canvas.height = height;
canvas.getContext("2d").drawImage(img,0,0,width,height);
// Вот тут заминка, на работает функция, а нужно еще и для всех браузеров
// включая EI10+
canvas.download = ("chart.png");
canvas.toBlob(function(blob){
saveAs(blob, "Изображение.png","image/png");
});
import FileSaver from 'FileSaver';
...
canvas.toBlob(function(blob) {
//FileSaver.saveAs(blob, "chart.png","image/png");
saveAs(blob, "chart.png","image/png");
});
var dt = canvas.toDataURL("image/png");
if (canvas.msToBlob) { //for IE
console.log('EI');
canvas.msToBlob(function(blob) {
//Дальше просто не работает. нет ошибок
saveAs(blob);
//saveAs(blob, "chart.png","image/png");
});
} else {
//other browsers
canvas.toBlob(function(blob) {
saveAs(blob, "chart.png","image/png");
});
}
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
может оно как-то влияет? Note: The standard HTML5 canvas.toBlob() method is not available in all browsers. canvas-toBlob.js is a cross-browser canvas.toBlob() that polyfills this.вы скриптом пользуетесь, а я через функцию js пытаюсь. наверно в этом все дело. копаю дальше...
<script async="" src="https://cdn.rawgit.com/eligrey/Blob.js/0cef2746414269b16834878a8abc52eb9d53e6bd/Blob.js"/>
<script async="" src="https://cdn.rawgit.com/eligrey/canvas-toBlob.js/f1a01896135ab378aa5c0118eadd81da55e698d8/canvas-toBlob.js"/>
canvas.getContext("2d").drawImage(img,0,0,width,height);
function generateFunc(download) {
if (download!==false) download=true;
/*...... готовим картинку в "canvas"-переменной............. */
var canvas2 = document.createElement('canvas');
ctx = canvas2.getContext('2d');
try {
ctx.putImageData(canvas.context.getImageData(0,0,w,h),0,0);
}catch(e){alert('Error!');}
var dt = canvas2.toDataURL("image/png");
if (download)
canvas2.toBlob(function(blob){
saveAs(blob, "Изображение.png","image/png");
});
return dt;
}
function download(){ //вешаем на клик объекта DOM
var img=generateFunc(false); //вызывается всегда
if (img) {
$.ajax({
method: "POST",
url: "ajax.php",
dataType: 'json',
data: JSON.stringify({'basket':basket_arr,'img':img}),
})
.done(function( msg ) {
//for real-server-side: заглушка!
console.log(msg);
alert('Запущено с сервера! См. консоль!');
})
.error(function(){
//alert("Data: "+JSON.stringify({'basket':basket_arr,'img':img}));
})
.always(function(){
if (confirm("Хотите скачать изображение?"))
generateFunc();
});
} //if (img)
}
// Create the export function - this will just export
// the first svg element it finds
// Select the first svg element
var svg = d3.select("svg")[0][0],
img = new Image(),
serializer = new XMLSerializer(),
svgStr = serializer.serializeToString(svg);
img.src = 'data:image/svg+xml;base64,'+window.btoa(svgStr);
var canvas = document.createElement("canvas");
//document.body.appendChild(canvas);
canvas.width = width;
canvas.height = height;
if (canvas.msToBlob) { //for IE
console.log('EI');
canvas.getContext("2d");
canvas.msToBlob(function(blob) {
saveAs(blob, "chart.png","image/png");
});
} else {
//other browsers
canvas.getContext("2d").drawImage(img,0,0,width,height);
canvas.toBlob(function(blob) {
saveAs(blob, "chart.png","image/png");
});
}
ctx.putImageData(canvas.context.getImageData
минимум... Unable to get property 'getImageData' of undefined or null reference
if (canvas.msToBlob) { //for IE
console.log('EI');
var ctx = canvas.getContext("2d");
ctx.putImageData(canvas.context.getImageData(0,0,width,height),0,0);
canvas.msToBlob(function(blob) {
saveAs(blob, "chart.png","image/png");
});
} else {...
Unable to get property 'getImageData' of undefined or null reference
if (canvas.msToBlob) { //for IE
console.log('EI');
var ctx = canvas.getContext("2d");
ctx.putImageData(canvas.context.getImageData(0,0,width,height),0,0);
canvas.msToBlob(function(blob) {
saveAs(blob, "chart.png","image/png");
});
} else {...
Object doesn't support property or method 'getImageData'
if (canvas.msToBlob) { //for IE
console.log('EI');
var ctx = canvas.getContext("2d");
ctx.putImageData(canvas.context.getImageData(0,0,width,height),0,0);
canvas.msToBlob(function(blob) {
saveAs(blob, "chart.png","image/png");
});
} else {...
var ctx = canvas.getContext("2d");
var context = canvas.getContext("2d");
ctx.putImageData(context.getImageData(0,0,width,height),0,0);
canvas.msToBlob(function(blob) {
saveAs(blob, "chart.png","image/png");
});