【发布时间】:2015-04-04 14:55:37
【问题描述】:
我正在尝试允许用户通过 CMS 上传 SVG 图像并生成后备 PNG,以便当 CMS 在前端显示内容时,会为旧版浏览器显示 PNG 后备。
问题是,当我上传 SVG 时,PNG 输出有点偏离,渐变似乎缺失,如下面的屏幕截图所示。
在这些测试中,我只是使用如下的 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
【问题讨论】:
-
如果下面的答案没有帮助,您能否发布启用详细命令的输出结果,以及发布示例 pdf?
标签: php svg imagemagick imagick imagemagick-convert