У меня есть приложение, которое генерирует SVG, а затем преобразует это SVG в изображение PNG.Это работает на локальном виртуальном хосте с Ubuntu OS, но когда я пытаюсь заставить его работать на моем Windows XAMP, он генерирует поврежденный файл.
Мой код:
$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 OS):
Фактический результат на сервере Windows xampp:
Я надеюсь, что кто-то может помочь мне указать, где проблема, потому что не отображаются сообщения об ошибках.
Я следовал инструкциям на этом сайте иустановленная магическая картинка: https://mlocati.github.io/articles/php-windows-imagick.html
Я установил версию магической картинки, определенную в описании класса phpinfo imagick