html2canvas 不呈现图像(外部托管图像)
html2canvas not rendering image (externally hosted images)
我创建了一个游戏,用户可以在其中从 4 个单独的幻灯片中选择 4 张图像来创建合成图像,然后我希望能够将其导出到我网站上的 'gallery' 功能。我正在尝试使用 html2canvas 但遇到了一些问题
这是我的 jquery:
var shotit = function() {
$('.bodyWrap').html2canvas({
onrendered : function(canvas) {
var img = canvas.toDataURL();
$('<img>',{src:img}).appendTo($('body'));
}
}); }
body wrap 是一个非常长的 html 元素,里面有很多子元素,但它基本上是这样的
<div class="bodyWrap">
<div class="header">
<h1>TITLE</h1>
</div>
<div class="slideshowWrapper">
<div class="slideshow">
<div class="slideshowWrapper">
<div class="slideshow">
<div class="slide">
<img class="img2" src="https://i.imgur.com/mnJDmlS.jpg" alt="head1">
<div class="emailButton">
<a class="emailLink" href="mailto:emailaddres@email.com?Subject=Let's mail"target="_blank"><br>Name of Artist</a>
</div>
</div>
<div class="slide">
<img https://picture.jpg>
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
<div class="slideshow">
<div class="slide">
<img https://picture.jpg>
</div>
<div class="slide">
<img https://picture.jpg>
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
<div class="slideshow">
<div class="slide">
<img https://picture.jpg>
</div>
<div class="slide">
<img https://picture.jpg>
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
<div class="slideshow">
<div class="slide">
<img https://picture.jpg>
</div>
<div class="slide">
<img https://picture.jpg>
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
</div>
</div>
</div>
</div>
图片托管在外部 imgur 上,而不是在我的网站上。
然后是一个看起来像这样的按钮(用于拍照)
<a href="#" onClick="shotit()">take picture</a>
抱歉,代码可能有点多,但我只是不知道问题出在哪里!!
无论如何,感谢收到任何帮助或指点!谢谢
试试这个:
<div class="bodyWrap">
<div class="header">
<h1>TITLE</h1>
</div>
<div class="slideshowWrapper">
<div class="slideshow">
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
<div class="slideshow">
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
<div class="slideshow">
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
<div class="slideshow">
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
</div>
</div>
</div>
</div>
<a href="#" onClick="shotit(event)">take picture</a>
<script src="jquery-2.1.1.min.js"></script>
<script src="html2canvas.js"></script>
<script>
var shotit = function(e)
{
e.preventDefault();
html2canvas($('.bodyWrap'), {
onrendered: function(canvas)
{
document.body.appendChild(canvas);
},
logging:true
});
};
</script>
您可以通过在 html2canvas 函数中传递一个选项来实现。
html2canvas(document.body,
{
useCORS: true, //By passing this option in function Cross origin images will be rendered properly in the downloaded version of the PDF
onrendered: function (canvas) {
//your functions here
}
});
我创建了一个游戏,用户可以在其中从 4 个单独的幻灯片中选择 4 张图像来创建合成图像,然后我希望能够将其导出到我网站上的 'gallery' 功能。我正在尝试使用 html2canvas 但遇到了一些问题
这是我的 jquery:
var shotit = function() {
$('.bodyWrap').html2canvas({
onrendered : function(canvas) {
var img = canvas.toDataURL();
$('<img>',{src:img}).appendTo($('body'));
}
}); }
body wrap 是一个非常长的 html 元素,里面有很多子元素,但它基本上是这样的
<div class="bodyWrap">
<div class="header">
<h1>TITLE</h1>
</div>
<div class="slideshowWrapper">
<div class="slideshow">
<div class="slideshowWrapper">
<div class="slideshow">
<div class="slide">
<img class="img2" src="https://i.imgur.com/mnJDmlS.jpg" alt="head1">
<div class="emailButton">
<a class="emailLink" href="mailto:emailaddres@email.com?Subject=Let's mail"target="_blank"><br>Name of Artist</a>
</div>
</div>
<div class="slide">
<img https://picture.jpg>
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
<div class="slideshow">
<div class="slide">
<img https://picture.jpg>
</div>
<div class="slide">
<img https://picture.jpg>
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
<div class="slideshow">
<div class="slide">
<img https://picture.jpg>
</div>
<div class="slide">
<img https://picture.jpg>
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
<div class="slideshow">
<div class="slide">
<img https://picture.jpg>
</div>
<div class="slide">
<img https://picture.jpg>
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
</div>
</div>
</div>
</div>
图片托管在外部 imgur 上,而不是在我的网站上。
然后是一个看起来像这样的按钮(用于拍照)
<a href="#" onClick="shotit()">take picture</a>
抱歉,代码可能有点多,但我只是不知道问题出在哪里!!
无论如何,感谢收到任何帮助或指点!谢谢
试试这个:
<div class="bodyWrap">
<div class="header">
<h1>TITLE</h1>
</div>
<div class="slideshowWrapper">
<div class="slideshow">
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
<div class="slideshow">
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
<div class="slideshow">
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
<div class="slideshow">
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="slide">
<img src="https://picture.jpg">
</div>
<div class="prevControl"></div>
<div class="nextControl"></div>
</div>
</div>
</div>
</div>
<a href="#" onClick="shotit(event)">take picture</a>
<script src="jquery-2.1.1.min.js"></script>
<script src="html2canvas.js"></script>
<script>
var shotit = function(e)
{
e.preventDefault();
html2canvas($('.bodyWrap'), {
onrendered: function(canvas)
{
document.body.appendChild(canvas);
},
logging:true
});
};
</script>
您可以通过在 html2canvas 函数中传递一个选项来实现。
html2canvas(document.body,
{
useCORS: true, //By passing this option in function Cross origin images will be rendered properly in the downloaded version of the PDF
onrendered: function (canvas) {
//your functions here
}
});