gpt4 book ai didi

svg - 如何使用 MiniMagick 进行 SVG 到 PNG 渲染而不忽略大小和字体选项?

转载 作者:行者123 更新时间:2023-12-01 22:58:55 26 4
gpt4 key购买 nike

我正在使用minimagick将 SVG 图像动态调整为 PNG 图像。

这是我的代码:

require "mini_magick"

svgString = '<?xml version="1.0" encoding="UTF-8"?>'\
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" viewBox="0, 0, 512, 512">'\
'<g id="Calque_1">'\
' <g>'\
' <path d="M256,432.5 C143.61,432.5 52.5,345.867 52.5,239 C52.5,132.133 143.61,45.5 256,45.5 C368.39,45.5 459.5,132.133 459.5,239 C459.5,345.867 368.39,432.5 256,432.5 z" fill="#FFFFFF"/>'\
' <path d="M256,432.5 C143.61,432.5 52.5,345.867 52.5,239 C52.5,132.133 143.61,45.5 256,45.5 C368.39,45.5 459.5,132.133 459.5,239 C459.5,345.867 368.39,432.5 256,432.5 z" fill-opacity="0" stroke="#000000" stroke-width="1"/>'\
' </g>'\
' <text transform="matrix(1, 0, 0, 1, 179.125, 208)">'\
' <tspan x="-28.125" y="10.5" font-size="24" fill="#000000">Is this using my font?</tspan>'\
' </text>'\
' </g>'\
'</svg>'

image = MiniMagick::Image.read(svgString)
image.combine_options do |b|
b.resize "760x760"
b.font "/Users/foo/Library/Fonts/myFont.ttf"
end
image.format("png", 1)
image.write('from-string.png')

图像已渲染,但它是 512x512 图像(视口(viewport)大小),并且渲染中未使用字体 myFont

知道如何解决这个问题吗?

最佳答案

不确定这是否有助于调试您的问题,但如果您从 SVG 字符串中删除特定于语言的内容并将其保存在名为 image.svg 的文件中>,您可以使用ImageMagick的命令行版本进行测试:

<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" viewBox="0, 0, 512, 512">
<g id="Calque_1">
<g>
<path d="M256,432.5 C143.61,432.5 52.5,345.867 52.5,239 C52.5,132.133 143.61,45.5 256,45.5 C368.39,45.5 459.5,132.133 459.5,239 C459.5,345.867 368.39,432.5 256,432.5 z" fill="#FFFFFF"/>
<path d="M256,432.5 C143.61,432.5 52.5,345.867 52.5,239 C52.5,132.133 143.61,45.5 256,45.5 C368.39,45.5 459.5,132.133 459.5,239 C459.5,345.867 368.39,432.5 256,432.5 z" fill-opacity="0" stroke="#000000" stroke-width="1"/>
</g>
<text transform="matrix(1, 0, 0, 1, 179.125, 208)">
<tspan x="-28.125" y="10.5" font-size="24" fill="#000000">Is this using my font?</tspan>
</text>
</g>
</svg>

像这样:

convert -resize 760x760 -font "AdobeDevanagariBI" image.svg image.png

你会得到这个:

enter image description here

其中使用我指定的字体(我没有你的)并且也是760x760。

我希望这会有所帮助。我的推断是,要么你的 ImageMagick 已经过时,要么 MiniMagick 有错误。抱歉,我不知道如何调试 MiniMagick - 你能看到它实际上在幕后做什么吗?有调试器吗?

版本:ImageMagick 6.9.1-10 Q16 x86_64 2015-08-06 http://www.imagemagick.org

关于svg - 如何使用 MiniMagick 进行 SVG 到 PNG 渲染而不忽略大小和字体选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31748467/

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