gpt4 book ai didi

javascript - 将 div 转换为可下载的图像

转载 作者:可可西里 更新时间:2023-10-31 22:16:20 34 4
gpt4 key购买 nike

这是我用来将 div 转换为图像并使用 html2canvas.js 下载的代码

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://html2canvas.hertzen.com/build/html2canvas.js"></script>
<style>
#download{
margin:10% 40%;
}
.download-btn{
padding:10px;
font-size:20px;
margin:0 20px;
}
#test{
background:#3399cc;
padding:50px;
}
.x2{
transform: scale(2,2);
}
</style>


<div id="download">
<h1 id="test">Testing Download</h1>
</div>

<center>
<button id="download-window" class="download-btn">New Window</button>
<button id="download-png" class="download-btn">Download png</button>
<button id="download-jpg" class="download-btn">Download jpg</button>
<button id="download-pngx2" class="download-btn">Download pngx2</button>
</center>


<script>
$('#download-window').click(function(){

html2canvas($('#download'),
{
onrendered: function (canvas) {
var img = canvas.toDataURL("image/png");
window.open(img);
}
});
});

$('#download-png').click(function(){

html2canvas($('#download'),
{
onrendered: function (canvas) {
var a = document.createElement('a');
a.href = canvas.toDataURL("image/png");
a.download = 'image.png';
a.click();
}
});
});

$('#download-pngx2').click(function(){
$('#download').addClass('x2');
html2canvas($('#download'),
{
onrendered: function (canvas) {
var a = document.createElement('a');
a.href = canvas.toDataURL("image/png");
a.download = 'image.png';
a.click();
}
});
});

$('#download-jpg').click(function(){
html2canvas($('#download'),
{
onrendered: function (canvas) {
var a = document.createElement('a');
// toDataURL defaults to png, so we need to request a jpeg, then convert for file download.
a.href = canvas.toDataURL("image/jpeg").replace("image/jpeg", "image/octet-stream");
a.download = 'image.jpg';
a.click();
}
});
});
</script>

此处生成的图像分辨率不高。

有没有其他方法可以生成分辨率高的图像?

可以使用 php 函数来完成这项任务吗?

最佳答案

这里有一个简单的方法来做到这一点。

<div id="my-node">
You will get a image downloaded.
</div>

<button id="foo">download img</button>

<script>
var node = document.getElementById('my-node');
var btn = document.getElementById('foo');
btn.onclick = function() {
node.innerHTML = "I'm an image now."
domtoimage.toBlob(document.getElementById('my-node'))
.then(function(blob) {
window.saveAs(blob, 'my-node.png');
});
}
</script>

这是一个演示:this JSFiddle .

在这个 fiddle 中,使用了两个库:
dom-to-image:https://github.com/tsayen/dom-to-image
FileSaver.js:https://github.com/eligrey/FileSaver.js/

第一个用于将dom转为图片,第二个用于下载图片。

更新:如果你想获得 base64 的 img 而不是仅仅下载 img 作为 blob 格式。您可以执行以下操作:

domToImage
.toBlob(document.getElementById("my-node"))
.then(function(blob) {
saveBlobAsFile(blob, "XX.png");
});
// this function is to convert blob to base64 img
function saveBlobAsFile(blob, fileName) {
var reader = new FileReader();
reader.onloadend = function() {
var base64 = reader.result;
var img = document.createElement("img");
img.classList.add("me-img");
img.setAttribute("src", base64);
// insert the img to dom
document.getElementById("bar").appendChild(img);
};
reader.readAsDataURL(blob);
}

这里不需要 FileSaver.js,我们使用 html5 api FileReader 来实现。

关于javascript - 将 div 转换为可下载的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36941042/

34 4 0
文章推荐: ios - 如何在 UITextView 中为文本添加轮廓?
文章推荐: html - 使用
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com