PHP Image Magick将SVG转换为PNG后生成损坏的图像

时间:2019-05-09 03:04:01

标签: php svg imagemagick png

我有一个生成svg并将其转换为png图像的应用。这适用于使用ubuntu os的本地虚拟主机,但是当我尝试使其在Windows xampp上运行时,它将生成损坏的文件。

我的代码:

$svg = new SimpleXMLElement($data);
$svg->registerXPathNamespace('svg', 'http://www.w3.org/2000/svg');

$svg = $svg->asXML();

if(!file_exists(TMP_DIRECTORY)) {
     mkdir(TMP_DIRECTORY, 0775);
}

$filePath = TMP_DIRECTORY . DS . base64_encode(time()) . ".svg";
file_put_contents($filePath, $svg);

$contents = file_get_contents($filePath);

$im = new Imagick();

$im->setResolution(300, 300);
$im->setBackgroundColor(new ImagickPixel('transparent'));

$im->setFont("C:/xampp56/htdocs/daimler/fonts/DaimlerCS/DaimlerCS-Demi.otf");

try {
    if (!$im->readImageBlob($contents)) {
                echo 'Cannot read svg file!';
     }
} catch (Exception $e) {
     echo $e->getMessage();
     exit;
}

$im->setImageFormat("png24");
$filename = TMP_DIRECTORY . DS . 'test.png';
$im->writeImage($filename);
$im->clear();
$im->destroy();

预期结果(在虚拟主机ubuntu操作系统中生成): enter image description here

Windows xampp服务器中的实际结果: enter image description here

我希望有人可以帮助我指出问题所在,因为没有显示错误消息。

我按照此网站上的说明进行了操作,并安装了图像魔术:https://mlocati.github.io/articles/php-windows-imagick.html

我已经安装了phpinfo imagick类描述中定义的image magick版本

enter image description here

0 个答案:

没有答案