JS下载添加文本的图像
JS Download Image With Text added
我对Stack Overflow比较陌生,所以在问这个问题时,我会尽量做到彻底和简洁。我正在做一个项目,并且刚刚实现了一个功能来打印图形的 png 图像(使用 D3.js)。现在我想为下载的 png 添加一个日期(或文本)(仅在下载后)。我一直在尝试各种事情,但没有运气。有什么想法吗?
window.printPNG = function () {
// Inputs
var mySVG = document.getElementById('the-bubble-chart');
var myXML = (new XMLSerializer()).serializeToString(mySVG);
// Outputs
var myCanvas = document.getElementById('canvg-output');
var myImg = document.getElementById('png-output');
var myA = document.getElementById('png-link');
canvg(myCanvas, myXML);
var dataURL = myCanvas.toDataURL('image/png');
var dataURLHeaders = "data:application/octet-stream;headers=Content-Disposition%3A%20attachment%3B%20filename=download.png;";
// Format file name for download
var d = new Date(),
dateString = d.getMonth() + 1 + "-" + d.getDate() + "-" + d.getFullYear().toString();
myImg.src = dataURL;
myA.href = dataURL.replace('data:', dataURLHeaders);
myA.download = dateString + "_" + "download.png";
myA.click()
}
在将文本转换为 png 之前,您可以将文本直接添加到画布中:
...
canvg(myCanvas, myXML);
// Format file name for download
var d = new Date(),
dateString = d.getMonth() + 1 + "-" + d.getDate() + "-" + d.getFullYear().toString();
// add date to canvas
var ctx = myCanvas.getContext("2d");
ctx.font = "30px Arial";
ctx.fillText(dateString,10,50);
var dataURL = myCanvas.toDataURL('image/png');
...
完整代码:
<!DOCTYPE html>
<html>
<head>
<script data-require="d3@3.5.3" data-semver="3.5.3" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.js"></script>
<script src="http://canvg.googlecode.com/svn/trunk/canvg.js"></script>
</head>
<body>
<svg id="the-bubble-chart" width="500" height="500"></svg>
<canvas id="canvg-output"></canvas>
<img id="png-output" /> <br><br>
<a id="png-link">Click Here</a>
<script>
var svg = d3.select('#the-bubble-chart');
svg.append("rect")
.attr("width", 500)
.attr("height", 500)
.style("fill","lightblue");
svg.selectAll('circle')
.data([0,1,2,3])
.enter()
.append('circle')
.attr('cx', function(d){
return d * 100 + 50;
})
.attr('cy', function(d){
return d * 100 + 50;
})
.attr('r', 30)
.style('fill','red');
window.printPNG = function() {
// Inputs
var mySVG = document.getElementById('the-bubble-chart');
var myXML = (new XMLSerializer()).serializeToString(mySVG);
console.log(myXML)
// Outputs
var myCanvas = document.getElementById('canvg-output');
var myImg = document.getElementById('png-output');
var myA = document.getElementById('png-link');
canvg(myCanvas, myXML);
// Format file name for download
var d = new Date(),
dateString = d.getMonth() + 1 + "-" + d.getDate() + "-" + d.getFullYear().toString();
var ctx = myCanvas.getContext("2d");
ctx.font = "30px Arial";
ctx.fillText(dateString,10,50);
var dataURL = myCanvas.toDataURL('image/png');
var dataURLHeaders = "data:application/octet-stream;headers=Content-Disposition%3A%20attachment%3B%20filename=download.png;";
myImg.src = dataURL;
myA.href = dataURL.replace('data:', dataURLHeaders);
myA.download = dateString + "_" + "download.png";
//myA.click()
}
printPNG();
</script>
</body>
</html>
相关文章:
- 将HTML表格导出到带有文本和图像的excel中
- 可单击滚动图像以显示文本框
- 正确输入的文本会更改图像
- 无法将包含文本和图像的SVG保存到画布
- 如何知道锚在文本或图像上
- 自动缩放图像以匹配文本高度
- 一个javascript实现base64图像编码并将结果写入文本文件
- 有人知道有没有jquery插件可以在图像上写文本,并让用户将其放置在图像内的任何位置
- jQuery对请求图像的外部文本进行查询
- 如何检测移动浏览器(PHP/Javascript),然后进行图像/文本更改
- ASP.NET网页-使用脚本显示由预定义日期和时间指定的图像/文本
- 合并 2 个 javascript/jquery 随机横幅图像/文本函数彼此对应
- 使用javascript在html中制作一个随机的图像/文本/url元素
- 将彩色带置于图像/标签+图像/文本对齐方式之上->JavaScript Titanium移动应用程序
- 将2D画布(图像+文本)应用于3D表面,并进行360度旋转/动画-可以使用HTML5/CSS3/Javascript或F
- 覆盖HTML 5输入类型文件,相机与图像/文本从HTML网页
- 脚本标记中的Paperclip图像集显示的是图像文本url,而不是图像-expandablebanners.js
- 图像文本上的代码后面
- 电子邮件中包含图像/文本/插图的HTML滑块
- 如何从不同的媒体子集创建视频,如图像/文本等