canvas 图片变得模糊
canvas image gets blurry
https://jsfiddle.net/Abhi_Solanki/9yktct3z/3/ 这里 fiddle link..
我想做的是显示与高图显示相同的输出它以 PDF 格式或 SVG 格式导出,事实上在这段代码中我使用了用于生成 Highcharts SVG 文件的相同函数输出对我来说似乎合适
但问题当我将该变量传递到 canvg.js 文件调用 canvg 函数时出现,此时图像的输出变得模糊
我希望输出保持不变,因为它没有像素模糊,因为它在 highcharts pdf 中是一样的。因为我必须在 pdf 文件中显示图表图像,所以请帮忙。代码如下
var svgres = chart.getSVG();
var svgArr = [],
top = 0,
height = 0,
width = 0,
col=0;
svgCustDim = 400;
var svgWidth = 600,
svg = svgres.replace('<svg', '<g transform="translate(' + col * svgWidth + ',' + top + ')" ');
svg = svg.replace('</svg>', '</g>');
svg = '<svg height="' + svgCustDim + '" width="' + svgCustDim*(3)+ '" version="1.1" xmlns="http://www.w3.org/2000/svg">' + svg + '</svg>';
canvg('canvas', svg);
var canvas = document.getElementById('canvas');
return canvas.toDataURL("image/jpeg");
github 上的演示页面中使用的 canvg 版本有问题。如果我从这里 https://github.com/canvg/canvg/blob/master/canvg.js 获取脚本并将其粘贴到 fiddle 它工作正常。
您可以在此处阅读更多相关信息 https://github.com/canvg/canvg/issues/486。
而且你的canvas比图片大很多,你可以取图表的宽度和高度,使canvas与图表的尺寸相同。
svgCustDim = chart.chartHeight;
var svgWidth = chart.chartWidth,
svg = svgres.replace('<svg', '<g');
svg = svg.replace('</svg>', '</g>');
svg = '<svg height="' + svgCustDim + '" width="' + svgWidth+ '" version="1.1" xmlns="http://www.w3.org/2000/svg">' + svg + '</svg>';
这是一个 fiddle,其中 canvg.js 取自上面的 url 并进行了更改,以便您的 canvas 与图表 [=15] 的尺寸相同=]
请注意,缩小版本 (canvg.min.js) 似乎是
如果您想要更大分辨率的图像,请从图表容器中移除高度和宽度
<div id="container" style="margin: 0 auto"></div>
并在图表选项中设置它们,我使用了 2000*2000,但你可以随意调整这些值
chart: {
height: 2000,
width: 2000,
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie'
},
这里是完整的fiddlehttps://jsfiddle.net/9yktct3z/10/
https://jsfiddle.net/Abhi_Solanki/9yktct3z/3/ 这里 fiddle link..
我想做的是显示与高图显示相同的输出它以 PDF 格式或 SVG 格式导出,事实上在这段代码中我使用了用于生成 Highcharts SVG 文件的相同函数输出对我来说似乎合适
但问题当我将该变量传递到 canvg.js 文件调用 canvg 函数时出现,此时图像的输出变得模糊
我希望输出保持不变,因为它没有像素模糊,因为它在 highcharts pdf 中是一样的。因为我必须在 pdf 文件中显示图表图像,所以请帮忙。代码如下
var svgres = chart.getSVG();
var svgArr = [],
top = 0,
height = 0,
width = 0,
col=0;
svgCustDim = 400;
var svgWidth = 600,
svg = svgres.replace('<svg', '<g transform="translate(' + col * svgWidth + ',' + top + ')" ');
svg = svg.replace('</svg>', '</g>');
svg = '<svg height="' + svgCustDim + '" width="' + svgCustDim*(3)+ '" version="1.1" xmlns="http://www.w3.org/2000/svg">' + svg + '</svg>';
canvg('canvas', svg);
var canvas = document.getElementById('canvas');
return canvas.toDataURL("image/jpeg");
github 上的演示页面中使用的 canvg 版本有问题。如果我从这里 https://github.com/canvg/canvg/blob/master/canvg.js 获取脚本并将其粘贴到 fiddle 它工作正常。
您可以在此处阅读更多相关信息 https://github.com/canvg/canvg/issues/486。
而且你的canvas比图片大很多,你可以取图表的宽度和高度,使canvas与图表的尺寸相同。
svgCustDim = chart.chartHeight;
var svgWidth = chart.chartWidth,
svg = svgres.replace('<svg', '<g');
svg = svg.replace('</svg>', '</g>');
svg = '<svg height="' + svgCustDim + '" width="' + svgWidth+ '" version="1.1" xmlns="http://www.w3.org/2000/svg">' + svg + '</svg>';
这是一个 fiddle,其中 canvg.js 取自上面的 url 并进行了更改,以便您的 canvas 与图表 [=15] 的尺寸相同=]
请注意,缩小版本 (canvg.min.js) 似乎是
如果您想要更大分辨率的图像,请从图表容器中移除高度和宽度
<div id="container" style="margin: 0 auto"></div>
并在图表选项中设置它们,我使用了 2000*2000,但你可以随意调整这些值
chart: {
height: 2000,
width: 2000,
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie'
},
这里是完整的fiddlehttps://jsfiddle.net/9yktct3z/10/