Php 不使用ImageMagick从SVG XML创建PNG

Php 不使用ImageMagick从SVG XML创建PNG,php,image,svg,png,converter,Php,Image,Svg,Png,Converter,在服务器端,我有一个生成的SVG XML源代码。 为了提供从SVG XML代码下载的PNG(或JPG),应该将其更改为图像。 在网上搜索了很长时间,我只使用ImageMagick找到了这个解决方案。 但是我无法访问ImageMagick库,因此我需要一种不同的方法将SVG XML代码转换为位图图像 有人有主意吗 Brw:它不是保存svg并在操作系统上执行二进制或脚本以进行转换的选项 谢谢。您需要使用蜡染库。下载它,放在项目的某个地方。然后在php中使用shell_exec()函数调用batik命

在服务器端,我有一个生成的SVG XML源代码。 为了提供从SVG XML代码下载的PNG(或JPG),应该将其更改为图像。 在网上搜索了很长时间,我只使用ImageMagick找到了这个解决方案。 但是我无法访问ImageMagick库,因此我需要一种不同的方法将SVG XML代码转换为位图图像

有人有主意吗

Brw:它不是保存svg并在操作系统上执行二进制或脚本以进行转换的选项


谢谢。

您需要使用蜡染库。下载它,放在项目的某个地方。然后在php中使用shell_exec()函数调用batik命令。将svg转换为png需要几秒钟的时间

示例:-

outputfile ='path where you want to lace png'
$tempSVG_filename = '/var/www' . $baseUrl . '/png/temp.svg';
$tempSVG_handle = fopen($tempSVG_filename, 'w+');
fwrite($tempSVG_handle, $YourSVG);
fclose($tempSVG_handle);
$mimetype = 'image/png';
$width = '6000';

$result = shell_exec('java  -jar /var/www/svgtopng/batik-1.7/batik-rasterizer.jar -m ' . $mimetype . ' -d ' . $outputfile . ' -w ' . $width . ' ' . $tempSVG_filename . ' 2>&1');
 unlink($tempSVG_filename);

您的意思是说您在动态创建SVG,并且需要提供PNG吗?你能提供更多细节吗?您正在尝试解决跨浏览器问题吗?Inkscape可以将SVG导出为PNG(另存为似乎还不起作用),但据我所知,这似乎不符合要求。您签出了吗?他们使用java,但你应该能够连接它。@256不,这不是跨浏览器主题。在这个web应用程序中,用户可以创建svg。因此,应用程序中的所有图形信息都是svg代码。创建svg后,应该可以将此svg下载/导出为png。对于这种情况,web应用程序必须将SVG呈现为png。(jpg也是一种选择)。我已经查看了你的链接。但我不确定这个解决方案是否适合这个问题。因为我不知道如何在PHP解释器(生成th网站)上执行java代码,我们现在已经超出了我的专业范围。我看到有一个可以在后端使用的应用程序(以及其他技术),另一种可能是构建一个可以在前端调用(从Javascript)的Java小程序…谢谢你的回答,但它不适合我的问题,因为:
它不是保存svg的选项,而是在操作系统上执行二进制或脚本来转换。但这正是你的建议。