gpt4 book ai didi

php - ImageMagick SVG 到 PNG 转换删除渐变

转载 作者:行者123 更新时间:2023-12-02 04:24:06 25 4
gpt4 key购买 nike

我试图允许用户通过 CMS 上传 SVG 图像并生成后备 PNG,以便当 CMS 在前端显示内容时,会为旧版浏览器显示 PNG 后备图像。

问题是,当我上传 SVG 时,PNG 输出有点偏离,渐变似乎丢失,如下面的屏幕截图所示。

SVG on the left PNG on the right

在这些测试中,我只是使用 ImageMagick 命令行,如下所示,但已使用 Imagick 通过 CMS 上传进行了尝试,结果相同。

convert gallardo.svg gallardo.png

Imagick 版本将背景设置为透明,如 other threads 中的建议但 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
  • OSX 优胜美地 10.10

最佳答案

ImageMagick 本身并不执行 SVG 转换,而是将该任务委托(delegate)给第三方程序。您可以通过在转换命令中添加 -verbose 选项来查找正在使用哪个程序。

这个问题几乎肯定是由底层程序中的错误引起的 - 当您升级到新版本时,该问题有望消失。

关于php - ImageMagick SVG 到 PNG 转换删除渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28332339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com