Imagick不能正确渲染svg不透明度

I need same output from Inkscape and Imagick.

This is the expected result, exported from Inkscape.

corect image

However, the PHP code below outputs the following faulty result.

wrong image

PHP code:

<?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 code:

<?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>
dongxuxian1123
dongxuxian1123 我试过Windows764bit2.3.0同样的问题。在Linux3.1上它的工作原理应该如此。
7 年多之前 回复
doudui9516
doudui9516 你为什么需要使用Imagick?使用真正的SVG程序更容易。
大约 10 年之前 回复

3个回答



这已在当前版本的Imagick中修复。</ p>
</ div>

展开原文

原文

This is already fixed in current version of Imagick.

What version of PHP and ImageMagick are you running? Please share the relevant output of phpinfo(). Could this ImageMagick bug be affecting you? Or if you're not up to date, could another ImageMagic bug be affecting you?

EDIT: I don't have easy access to a server with PHP's ImageMagick libraries installed at the moment, but if I find one, I'll test the code provided and post my results.

EDIT2: Looks like others have the same issue, unless that forum post was also yours...

According to this forum post, you could try:

$im->setImageFormat("png32");

One person reported that worked, but another said it did not...

doufengsui7449
doufengsui7449 对不起,这是一个疯狂的一天,我无法为你测试这个。 我这周末会试试。 也许其他人会提出一个更明确的解决方案。
大约 10 年之前 回复
dongshi1207
dongshi1207 我使用ubuntu 10.04 lucid lynx,imagick和php由synaptic(apt frontend)安装。 我还在托管PHP版本5.3.3和imagick模块版本2.3.0上进行了测试
大约 10 年之前 回复
douwen5584
douwen5584 谢谢。 我发布了一些建议。 这是通过Ubuntu的apt-get安装的PHP / imagick库存吗? 什么版本的Ububtu? 我可以设置一个虚拟机,并在我的最后为您尝试。 如果你想谈谈这个,我经常在PHP聊天室。
大约 10 年之前 回复
dongqian1893
dongqian1893 PHP版本=> 5.3.2-1ubuntu4.2 imagick模块版本=> 2.1.1-rc1
大约 10 年之前 回复



Inkscape使用非普遍支持的 opacity </ code>属性。 请改用 fill-opacity </ code>和 stroke-opacity </ code>。</ p>
</ div>

展开原文

原文

Inkscape uses the not ubiquitously supported opacity property. Use fill-opacity and stroke-opacity instead.

dtufl26404
dtufl26404 值得知道,但我已经尝试用填充不透明度替换不透明度,这对这个例子没有任何影响。
接近 8 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐