php - 如何将用户绘制的网页中的 SVG 转换为 PNG 或 JPG?

标签 php javascript html canvas svg

我有一个网页,其中有一个带有 SVG 的 iframe,允许用户在其上绘图。当他们完成后,我想将他们的绘图转换为图像。我该怎么做?

(需要在 iOS Safari、Chrome、Firefox、Safari 桌面版、IE9+ 中运行)

我更喜欢客户端解决方案,但 PHP 解决方案也可以。

最佳答案

我最近为我正在从事的一个项目做了这个。 有不同的方法,但这就是我所采用的。

使用 jQuerycanvg ( http://code.google.com/p/canvg/ )

--

我的 JavaScript 函数

function getChartData(chartDiv) {

    var svg = $('#' + chartDiv).find('svg').parent().html();
    $('<canvas id="newCanvas_' + chartDiv + '" width="' + $('#' + chartDiv).width() + 'px" height="' + $('#' + chartDiv).height() + 'px" style="display: none; position: absolute; top: 0px; left: 0px; z-index: 0;"></canvas>').insertAfter('body');
    canvg(document.getElementById('newCanvas_' + chartDiv), svg);

    var imgData = document.getElementById('newCanvas_' + chartDiv).toDataURL("image/png");
    return imgData;
}

然后我在 DIV 中添加了 svg 元素。

<div id="mydrawing">
    <svg></svg>
</div>

然后我运行该函数来获取 SVG 的 Base64 编码字符串作为图像。

base64string = getChartData('mydrawing');

然后我可以使用该变量在 HTML 中显示图像,或者将其传递给 PHP 来生成要保存的图像。

<img src="data:image/png;base64, base64string" />

关于php - 如何将用户绘制的网页中的 SVG 转换为 PNG 或 JPG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16243032/

相关文章:

jquery - 在 li 上添加类并在单击时添加类

javascript - 如何获取选择输入字段中所有选项的文本

php - 按列名查找 cakePHP

php - 阻止 php 出现在背景图片上方

php - 在 Ubuntu 中开发时无法访问 CSS?

javascript - 单击列表中的项目 -> 查看详细信息但没有输出? Firebase.child 失败 : First argument was an invalid path

javascript - 谷歌浏览器 : Override geolocation via console

php - 通过html形式在mysql中插入数据(以及更多..)

javascript - 尝试点击打开窗口

在 "index"的情况下,PHP $_GET 无法获取 RewriteRule 的值