如何在 PHP 中使用 ImageMagick 将 SVG 转换为 PNG?

Bad*_*dar 8 php svg png image imagemagick

我想使用 PHP 使用 ImageMagick 将 SVG 转换为 PNG。我已经在 XAMPP 上安装了 ImageMagick 并使用 phpinfo() 对其进行了验证,但仍然无法生成图像。这是我的代码:

$svg = file_get_contents($svg_file);
//echo $svg;
$im = new Imagick();    
//$im->setBackgroundColor(new ImagickPixel('transparent'));  
// $svg = str_replace(array("color1","color2"),array("red","lightblue"),$svg);
$im->readImageBlob($svg);
//$im->setImageFormat("png32");
$im->setImageFormat("png24");
// $im->resizeImage(720, 445, imagick::FILTER_LANCZOS, 1);  
// $im->adaptiveResizeImage(720, 445);    
$im->writeImage($png_file);
header('Content-type: image/png');
echo $im;
$im->clear();
$im->destroy();
Run Code Online (Sandbox Code Playgroud)

Adr*_*uer 5

在 Windows 8 xampp 上阅读此Imagick

我制作了这个例子并且对我有用,只需下载blank-us-map.svg

<?php

$usmap = 'blank-us-map.svg';
$im = new Imagick();
$svg = file_get_contents($usmap);

$im->readImageBlob($svg);

$im->setImageFormat("png24");
$im->resizeImage(720, 445, imagick::FILTER_LANCZOS, 1);  /*Optional, if you need to resize*/

$im->writeImage('blank-us-map.png');

header('Content-type: image/png');
echo $im;

$im->clear();
$im->destroy();

?>
Run Code Online (Sandbox Code Playgroud)


小智 1

它可能与你的问题无关,但是你之前尝试过用“\”调用Imagick类吗?就像: $newImage = new \Imagick();

我知道我有和你一样的错误,那就是找不到类,直到我添加了这个前缀命名空间。我认为它与命名空间以及如何使用网络应用程序的类加载器加载类文件有关。