我有一个生成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();
我希望有人可以帮助我指出问题所在,因为没有显示错误消息。
我按照此网站上的说明进行了操作,并安装了图像魔术:https://mlocati.github.io/articles/php-windows-imagick.html
我已经安装了phpinfo imagick类描述中定义的image magick版本