【发布时间】:2018-08-29 06:01:34
【问题描述】:
我正在使用 domtoimage 库将 html(包含大量 CSS)转换为图像。
实际上我需要用于打印目的的高清晰度图像 (600 DPI)。因此,为此我将 html 缩放(缩放)到 6.25(600/96)倍,然后我使用 domtoimage 来捕获它。我按照我的计划成功了。我的图像分辨率很高,打印清晰度也令人满意。
但问题在于优化。 domtomimage 耗时太长。我知道这个问题是因为 html 缩放,但我需要高分辨率图像。
有什么想法可以快速捕获吗?我的主要重点是减少图书馆捕获和创建图像所花费的时间。
注意:
- 我也尝试过使用 phantom JS,但它不支持某些 css 属性。
- 我也试过 html2canvas,它也有一些 CSS 属性的限制
仅供参考,我已将 scale 属性添加到绘图功能
function draw(domNode, options) {
return toSvg(domNode, options)
.then(util.makeImage)
.then(util.delay(100))
.then(function (image) {
var canvas = newCanvas(domNode);
// canvas.getContext('2d').drawImage(image, 0, 0);
var ctx = canvas.getContext('2d');
if(options.scale){
ctx.scale(6.25,6.25);
}
ctx.drawImage(image, 0, 0);
return canvas;
});
function newCanvas(domNode) {
var canvas = document.createElement('canvas');
if(options.scale){
canvas.width = options.width || 6.25 * util.width(domNode);
canvas.height = options.height || 6.25 * util.height(domNode);
}
else{
canvas.width = options.width || util.width(domNode);
canvas.height = options.height || util.height(domNode);
}
if (options.bgcolor) {
var ctx = canvas.getContext('2d');
ctx.fillStyle = options.bgcolor;
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
return canvas;
}
}
【问题讨论】:
标签: javascript html