【发布时间】:2017-05-11 16:50:34
【问题描述】:
我正在尝试让 ImageMagick 为我做点什么,但我遇到了一些问题。首先,我不理解度量单位,因此传递到 ImageMagick 中,所以我的脚本没有产生我需要的东西。其次,我这样做的方式非常低效。运行此脚本需要很长时间(您在下面看到的脚本与我正在运行的脚本相比略有删减)。
所以对于我正在做的事情...我有许多带有图标的 svg 文件。我希望为每个文件生成一个页面。生成的页面将包含平铺在整个页面上的图标,并在侧面留有边距。我正在寻找 1/2 英寸的瓷砖,页面周围有 1/2 的边距,需要是美国信函(8 1/2 x 11 英寸)。
在阅读了很多文档之后,这就是我想出的。
colors=(red blue purple yellow green black)
mkdir -p generated/icons/
for color in ${colors[@]}; do
images=`printf "source/icons/${color}.svg%.0s " {1..300}`
montage $images -tile 15x20 -page Letter+1+1 -units PixelsPerInch -density 2550x3300 \
generated/icons/${color}.pdf
done
所以对于我的每个文件,我都会运行蒙太奇。我使用 printf 将图像文件名重复 300 次。然后我将它平铺 15x20 次。 15x20 来自 8.5 减去 1 英寸边距 = 7.5*2 = 15,同样 (11-1)*2 = 20。300 张图像来自 15*20。然后我说我想在字母页偏移 1x1 上使用它。 (这是我在边际上的尝试)我说我说的是每英寸像素(但似乎没有一个单位匹配)。我通过密度命令将 dpi 设置为 300,其中 8.5*300 = 2550 和 11*300 = 3300。
我一直在玩弄其他设置(几何等),但这些都不起作用。而且这些单位似乎也没有意义......现在我得到的pdf是一个正方形等等......
如何制作这样的平铺页面?还有没有办法让我更有效地做到这一点?到目前为止,我的速度非常慢。
编辑:
更多信息:
i:montage --version
Version: ImageMagick 6.8.8-10 Q16 x86_64 2015-03-10 @987654321@
注意边距不对,是方形的不是字母页,瓷砖也是倾斜的
【问题讨论】:
-
如果您提供了一个 SVG 文件和相应的输出示例,这将非常有助于我们了解您想要做什么。还有你使用的是什么版本的 ImageMagick。使用转换和读取图像一次而不是多次读取图像可以更有效地完成平铺。有关平铺方法的编号,请参阅imagemagick.org/Usage/canvas/#tile。我通常使用 mpr: 方法。
-
@fmw42 添加了一些图片,展示了我目前拥有的东西。
-
您的输入是 PNG 而不是 SVG。所以我们不能从你的起始条件开始。您能否发布与您提供的 PNG 文件对应的 SVG 文件的链接。平铺图像歪斜是什么意思?我没看到。
-
您是否使用 RSVG 或 Inkscape 或 IM MSVG/XML 为您的 SVG 委托阅读器以及什么版本?请注意,您的 IM 版本大约有 100 个旧版本。如果无法正常工作,您可能需要考虑升级。
-
您希望结果的输出密度是多少?这将决定你的质量。例如,如果您的图块对应于 72 dpi 的 0.5 英寸,则图块为 0.5*72=36 像素。但是如果你想要 300 dpi,那么每个图块 0.5*300=150 像素。
标签: pdf svg imagemagick tile