Php ImageMagick SVG到PNG的转换将删除渐变
我试图允许用户通过CMS上传SVG图像并生成一个备用PNG,这样当CMS在前端显示内容时,旧浏览器会显示PNG备用 问题是,当我上传一个SVG时,PNG输出有点失真,梯度似乎丢失了,如下面的屏幕截图所示 在这些测试中,我只使用ImageMagick命令行,如下所示,但使用Imagick通过CMS上传进行了尝试,结果相同Php ImageMagick SVG到PNG的转换将删除渐变,php,svg,imagemagick,imagick,imagemagick-convert,Php,Svg,Imagemagick,Imagick,Imagemagick Convert,我试图允许用户通过CMS上传SVG图像并生成一个备用PNG,这样当CMS在前端显示内容时,旧浏览器会显示PNG备用 问题是,当我上传一个SVG时,PNG输出有点失真,梯度似乎丢失了,如下面的屏幕截图所示 在这些测试中,我只使用ImageMagick命令行,如下所示,但使用Imagick通过CMS上传进行了尝试,结果相同 convert gallardo.svg gallardo.png Imagick版本按照中的建议将背景设置为透明,但PNG输出与命令行相同 class ResampleSv
convert gallardo.svg gallardo.png
Imagick版本按照中的建议将背景设置为透明,但PNG输出与命令行相同
class ResampleSvgUpload extends DataExtension {
function onAfterUpload() {
if($this->isSvg()){
$this->resample();
}
}
function onAfterWrite() {
if($this->isSvg()){
$this->resample();
}
}
function isSvg() {
$extension = strtolower($this->owner->getExtension());
return ($extension == 'svg') ? true : false;
}
function resample() {
$original = $this->owner->getFullPath();
$resampled = $original . '.png';
$imagick = new Imagick($original);
$imagick->setBackgroundColor(new ImagickPixel('transparent'));
$imagick->setImageFormat('png');
$imagick->writeImage($resampled);
}
}
我正在使用:
- ImageMagick 6.9.0-3
- Imagick 3.1.0RC2
- PHP 5.3.29
- 约塞米蒂10.10
-verbose
选项,可以找到正在使用的程序
该问题几乎肯定是由该基础程序中的错误引起的,当您升级到新版本时,该问题有望消失。如果下面的答案没有帮助,您能否在启用verbose命令的情况下发布输出结果,以及发布一个示例pdf?此示例的可能副本解决了问题-我用“brew重新安装ImageMagick-with librsvg librsvg-use rsvg”重新安装了ImageMagick,转换现在可以正常工作感谢提示!然而,它并没有立即为我工作。我必须执行“brew重新安装imagemagick——使用rsvg”以使其正常工作。现在很有魅力!一个古老的问题和答案,但仍然非常流行。这对我在Ubuntu 16上使用inkscape v0.91->v0.92有帮助。杰出的