6

我需要来自 Inkscape 和 Imagick 的相同输出。

这是从 Inkscape 导出的预期结果。

正确图像

但是,下面的 PHP 代码会输出以下错误结果。

错误的图像

PHP代码:

<?php
$im = new Imagick();

$im->setResolution(400,400);
$im->setBackgroundColor(new ImagickPixel('transparent'));
$im->readImageBlob(str_replace(array("color1", "color2"), array("yellow", "blue"), file_get_contents("img.svg")));

$im->setImageFormat("png");
header("Content-type: image/png");
echo $im;
?>

SVG 代码:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="400" height="400">
<rect width="100%" height="100%" fill="green" />
<path d="M250 150 L150 350 L350 350 Z" opacity="0.9" fill="color1" />
<path d="M150 50 L50 250 L250 250 Z" opacity="0.9" fill="color2" />
</svg>
4

3 回答 3

1

你运行的是什么版本的 PHP 和 ImageMagick?请分享相关输出phpinfo()这个 ImageMagick 错误会影响你吗?或者,如果您不是最新的,是否有另一个 ImageMagic 错误会影响您?

编辑:我目前无法轻松访问安装了 PHP 的 ImageMagick 库的服务器,但如果我找到了,我将测试提供的代码并发布我的结果。

EDIT2:看起来其他人也有同样的问题,除非那个论坛帖子也是你的......

根据此论坛帖子,您可以尝试:

$im->setImageFormat("png32");

一个人报告说有效,但另一个人说它没有......

于 2010-09-02T23:38:52.490 回答
0

Inkscape 使用不普遍支持的opacity属性。使用fill-opacityandstroke-opacity代替。

于 2012-08-24T12:12:58.573 回答
0

这已经在当前版本的 Imagick 中得到修复。

于 2015-01-17T23:44:27.570 回答