英文:
SVG 1.2 rasterizing via ImageMagick: vector-effect issue
问题
我注意到在不同版本的Ubuntu 22.04上,桌面版和Docker容器中,相同版本的ImageMagick CLI实用程序convert
表现出不同的行为。
我想要渲染SVG并利用SVG 1.2属性vector-effect="non-scaling-stroke":
<svg xmlns="http://www.w3.org/2000/svg"
width="200"
height="200"
>
<g
x="0"
y="0"
transform="scale(4)"
>
<rect
x="25"
y="25"
width="50"
height="50"
fill="#0cc"
stroke="black"
stroke-width="2"
vector-effect="non-scaling-stroke"
></rect>
</g>
</svg>
我在Xubuntu桌面22.04和Ubuntu 22.04服务器上的bash中运行了以下命令:
convert test.svg test.png
在Xubuntu 22.04桌面上,我得到了预期的结果:
桌面输出 - 存在细的、非缩放的描边和透明背景。
但是在Docker容器中的Ubuntu 22.04服务器上,缺少vector-effect
的应用:
服务器输出 - 存在粗的、缩放的描边和强制填充的背景。
两个系统都使用相同版本的ImageMagick:
convert --version
Version: ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25
我需要强制服务器版本的ImageMagick考虑vector-effect="non-scaling-stroke"。
英文:
I've noticed different behavior of ImageMagick CLI utility convert
of the same version, but on different versions of Ubuntu 22.04: desktop and docker container.
I want to render SVG utilizing SVG 1.2 attribute vector-effect="non-scaling-stroke":
<svg xmlns="http://www.w3.org/2000/svg"
width="200"
height="200"
>
<g
x="0"
y="0"
transform="scale(4)"
>
<rect
x="25"
y="25"
width="50"
height="50"
fill="#0cc"
stroke="black"
stroke-width="2"
vector-effect="non-scaling-stroke"
></rect>
</g>
</svg>
I run next command within bash both on Xubuntu Desktop 22.04 and Ubuntu 22.04 server:
convert test.svg test.png
and I get expected result on Xubuntu 22.04 Desktop:
Desktop output - there are thin, non-scaled stroke and also transparent background.
But I get lack of vector-effect
applying on Ubuntu 22.04 server within Docker container:
Server output - there are thick scaled stroke and force filled background.
Both system have the same ImageMagick version:
convert --version
Version: ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25
I need to force server version of ImageMagick to take vector-effect="non-scaling-stroke" into account.
答案1
得分: 1
问题很可能出在你的两个Imagemagick系统上使用的SVG渲染器不同。可能是Imagemagick的内部MSVG/XML渲染器,RSVG代理或者如果系统上安装了Inkscape(并且IM能够找到它的话),则可能是Inkscape,渲染质量逐渐增加。通过在命令行中添加-verbose来检查可能正在使用哪个渲染器。
英文:
The issue is likely which SVG renderer you are using on your two Imagemagick systems. It could be Imagemagick's internal MSVG/XML renderer, RSVG delegate or Inkscape if Inkscape is installed on the system (where IM can find it) all in order of increasing quality of the render. Check which is being used possibly by add -verbose to your command line.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论