我试图让 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 http://www.imagemagick.org
瓷砖图像:
我当前的输出:
注意边距不正确,是方形而不是字母页,也有倾斜的瓷砖
最佳答案
鉴于您提供的 PNG 图像,我想您希望在 8.5x11 英寸的打印图像内有一个 1 英寸的白色边框。因此,平铺宽度将为 7.5 英寸,平铺高度将为 10 英寸。
convert lUDbK.png -resize "150x150!" -write mpr:tile +delete -size 2250x3000 tile:mpr:tile -bordercolor white -border 300 -units pixelsperinch -density 300 tiled_page.png
在我的 Mac Mini 上,处理时间为 1.75 秒。
这会产生一个相当大的图像。您必须提取图像才能看到边框,因为此页面背景是白色的。
(请注意,PNG 仅支持像素每厘米,但 IM 会相应地转换我对像素每英寸的规范。因此,如果您查看元数据,它可能会以像素每厘米为单位显示一些其他密度。但它们将对应于所需的 300 dpi。)
关于pdf - 使用带有打印边距的 ImageMagick 在页面上平铺图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43921422/