我有一个页面,用户可以在其中创建自己的 SVG 图像。现在我想在服务器 (php) 上访问这些图像,以便将它们发送到电子邮件地址。
通过这些说明,我可以将 SVG 转换为画布,然后将画布转换为 jpeg/png。我不再担心 SVG 树,因为它不再需要编辑,因此将其转换为普通图像(我假设这会更容易处理,最终我想将该图像作为附件发送到电子邮件)。
这样做最有效的方法是什么?是否可以将转换后的 jpeg/png 发布到服务器?谢谢大家,这里有点迷路了。
我有一个页面,用户可以在其中创建自己的 SVG 图像。现在我想在服务器 (php) 上访问这些图像,以便将它们发送到电子邮件地址。
通过这些说明,我可以将 SVG 转换为画布,然后将画布转换为 jpeg/png。我不再担心 SVG 树,因为它不再需要编辑,因此将其转换为普通图像(我假设这会更容易处理,最终我想将该图像作为附件发送到电子邮件)。
这样做最有效的方法是什么?是否可以将转换后的 jpeg/png 发布到服务器?谢谢大家,这里有点迷路了。
经过大量阅读后,我设法找到了一个相当简单的解决方案,以防有人在这里遇到类似的问题:
使用canvg将 SVG 转换为普通画布后,您可以使用 canvas.toDataURL() 方法,然后您需要做的就是发布生成的 URL 并在服务器上对其进行解码。我为此使用了一个隐藏的输入字段。注意不要使用 JQuery 来获取画布,因为 JQuery 不返回实际的画布,而是返回一个 JQuery 对象。
var canvas = document.getElementById('canvas');
var dataUrl = canvas.toDataURL();
$('#hiddenInput').val(dataUrl);
在服务器端:
$encodeData = $_POST['dataUrl'];
$encodeData = substr($encodeData, strpos($encodeData, ',') + 1); //strip the URL of its headers
$decodeData = base64_decode($encodeData);
$handle = fopen('test.png', 'x+');
fwrite($handle, $decodeData);
fclose($handle);
SVG 现在以 png 格式在服务器上。