PHP Image Magick Создает поврежденное изображение после преобразования SVG в PNG. - PullRequest
1 голос
/ 09 мая 2019

У меня есть приложение, которое генерирует 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): enter image description here

Фактический результат на сервере Windows xampp: enter image description here

Я надеюсь, что кто-то может помочь мне указать, где проблема, потому что не отображаются сообщения об ошибках.

Я следовал инструкциям на этом сайте иустановленная магическая картинка: https://mlocati.github.io/articles/php-windows-imagick.html

Я установил версию магической картинки, определенную в описании класса phpinfo imagick

enter image description here

...