这是我使用的插件:DOM to Image library
如果你使用 NPM:
npm install dom-to-image
然后导入,
import domtoimage from 'dom-to-image';
带有需要下载为图像的标记的示例 HTML:
<div id="my-node">
<img src="/assets/images/image.jpg"/>
</div>
<div class="btn-group">
<button class="btn-primary" (click)="convertToPng()">Convert to PNG</button>
<button class="btn-primary" (click)="convertToJpeg()">Convert to JPEG</button>
<button class="btn-primary" (click)="downloadAsPng()">Download as PNG</button>
<button class="btn-primary" (click)="downloadAsJpeg()">Download as JPEG</button>
</div>
使用 CSS 应用的示例过滤器:
img {
filter: grayscale(100%);
}
转换为 PNG:
convertToPng(){
let node = document.getElementById('my-node');
domtoimage.toPng(node)
.then(function (dataUrl) {
var img = new Image();
img.src = dataUrl;
document.body.appendChild(img);
})
.catch(function (error) {
console.error('oops, something went wrong!', error);
});
}
转换为 JPEG:
convertToJpeg(){
let node = document.getElementById('my-node');
domtoimage.toJpeg(node)
.then(function (dataUrl) {
var img = new Image();
img.src = dataUrl;
document.body.appendChild(img);
})
.catch(function (error) {
console.error('oops, something went wrong!', error);
});
}
下载为 PNG:
downloadAsPng(){
let node = document.getElementById('my-node');
domtoimage.toPng(node)
.then(function (dataUrl) {
var link = document.createElement('a');
link.download = 'my-image-name.png';
link.href = dataUrl;
link.click();
});
}
下载为 JPEG:
downloadAsJpeg(){
let node = document.getElementById('my-node');
domtoimage.toJpeg(node, { quality: 0.95 })
.then(function (dataUrl) {
var link = document.createElement('a');
link.download = 'my-image-name.jpeg';
link.href = dataUrl;
link.click();
});
}