我有一个程序可以批量生成多个 SVG 文件,然后我需要能够将它们组合(平铺)到一个文件中,并设置一个空白区域,并以厘米(或毫米)为单位设置宽度。
我需要一个现有的脚本或一个指向我可以用来完成此任务的库和语言的指针。有什么建议从哪里开始?
我有一个程序可以批量生成多个 SVG 文件,然后我需要能够将它们组合(平铺)到一个文件中,并设置一个空白区域,并以厘米(或毫米)为单位设置宽度。
我需要一个现有的脚本或一个指向我可以用来完成此任务的库和语言的指针。有什么建议从哪里开始?
是的,正如@victor-henriquez指出的那样,您可以使用montage
它,但它有点棘手,我通过激活-verbose
输出进入它,并看到它创建了一个inkscape
命令并分析它为我解决了这个问题。
montage -version
# Version: ImageMagick 7.0.7-31 Q16 x86_64 20180506
我想要……</p>
-label
and -pointsize
(通过 pointsize 获得正确的字体大小但取决于密度)-density
(很难找到适合输出的数字)-tile 15x30
(此处为 15 列 x 30 行)-geometry '+40+0'
(水平添加 40 像素,垂直添加 0 像素)生成的命令是(添加-verbose
以获取详细的处理信息):
montage -label '%f' -pointsize 2 -density 300 *.svg \
-tile 15x30 \
-geometry '+40+0' \
./papirus-icons-mimetypes.png
如果您另外指定所需的输出像素大小几何,例如。96 像素乘 96 像素,要理解什么在起作用-geometry '96x96+40+0'
变得更加复杂。-density
我没能深入了解;-)
我使用了 Victor gem https://github.com/DannyBen/victor
first_svg = File.open("first.svg").read
second_svg = File.open("second.svg").read
first_content = first_svg.split("\n")[1..-2].join(", ")
second_content = second_svg.split("\n")[1..-2].join(", ")
svg = Victor::SVG.new width: "100%", height: "100%"
svg << first_content
svg << second_content
svg.save 'final.svg'
您可以从 ImageMagick 中查看蒙太奇:http ://www.imagemagick.org/Usage/montage/
您可以围绕它构建脚本。