我正在尝试使用ImageMagick将内联SVG转换为JPG。我从服务器返回JPG,但xlink中定义的远程图像始终为空白。我用SVG测试了一些基本的矢量形状,我确实在生成的JPEG中看到了这些,但这个引用外部图像的例子不起作用。
<?php
$mySVG = '<?xml version="1.0" encoding="utf-8"?><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 500 700" style="enable-background:new 0 0 500 700;" xml:space="preserve" width="500"><image style="overflow:visible;" width="500" height="700" xlink:href="http://www.sportsupplygroup.com/SVG_POC/lifter.jpg" transform="matrix(0.948 0 0 0.948 11 36.4)"></image></svg>';
$svg = $mySVG;
$jpeg = new Imagick();
$jpeg->readImageBlob($svg);
$jpeg->setImageFormat("JPEG");
header("Content-Type: image/jpeg");
echo $jpeg;
?>
能够将不同的图像加载到SVG的层中,使我们能够提供一些动态内容。我们想在HTML电子邮件中使用它,但由于SVG实际上不受支持,我想转换为类似JPG的东西。电子邮件会调用这样的脚本。
<img src="createImage.php"> <!-- call php to get the image -->
脚本可以使用它的图层创建SVG并发送回JPG。有没有更好的方法将SVG转换为JPG / PNG服务器端?