使用带有打印边距的 ImageMagick 在页面上平铺图像?
Tiling an image over a page with ImageMagick with print margins?
我正在尝试让 ImageMagick 为我做一些事情,但我 运行 遇到了一些问题。首先,我不理解传递给 ImageMagick 的度量单位,因此我的脚本没有生成我需要的内容。其次,我这样做的方式非常低效。 运行 这个脚本需要很长时间(你在下面看到的脚本比我 运行ning 稍微删减了)。
所以对于我正在做的事情...我有许多带有图标的 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 上。 (这是我的尝试)我说的是每英寸像素(但 none 的单位似乎匹配)。我通过密度命令将 dpi 设置为 300,其中 8.5*300 = 2550 和 11*300 = 3300.
我一直在尝试其他设置(几何等),但其中 none 有效。而且单位似乎也没有意义...现在我的结果 pdf 是一个正方形等...
如何制作这样的平铺页面?我还有办法更有效地做到这一点吗?到目前为止我的速度很慢。
编辑:
更多信息:
i:蒙太奇--版本
版本:ImageMagick 6.8.8-10 Q16 x86_64 2015-03-10 <a href="http://www.imagemagick.org" rel="nofollow noreferrer">http://www.imagemagick.org</a>
平铺图片:
我当前的输出:
注意页边距不对,是正方形不是字母页,平铺也是歪斜的
根据您提供的 PNG 图像,我认为您希望在 8.5x11 英寸的打印图像中四周有 1 英寸的白色边框。因此,平铺宽度为 7.5 英寸,平铺高度为 10 英寸。
- 1 英寸 = 300 dpi 所以边框厚度 = 300 像素 = 2 块厚
- 11-1 = 平铺区域高度为 10 英寸 = 10*300 = 3000 像素
- 8.5-1 = 7.5 英寸宽平铺区域宽度 = 7.5*300 = 2250 像素
- 1 个图块 = 0.5 英寸,300 dpi = 0.5*300 = 150 像素
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 仅支持 pixelspercentimeter,但 IM 会相应地转换我的 pixelperinch 规格。因此,如果您查看元数据,它可能会以 pixelspercmeter 为单位向您显示一些其他密度。但它们将对应于需要 300 dpi。)
我正在尝试让 ImageMagick 为我做一些事情,但我 运行 遇到了一些问题。首先,我不理解传递给 ImageMagick 的度量单位,因此我的脚本没有生成我需要的内容。其次,我这样做的方式非常低效。 运行 这个脚本需要很长时间(你在下面看到的脚本比我 运行ning 稍微删减了)。
所以对于我正在做的事情...我有许多带有图标的 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 上。 (这是我的尝试)我说的是每英寸像素(但 none 的单位似乎匹配)。我通过密度命令将 dpi 设置为 300,其中 8.5*300 = 2550 和 11*300 = 3300.
我一直在尝试其他设置(几何等),但其中 none 有效。而且单位似乎也没有意义...现在我的结果 pdf 是一个正方形等...
如何制作这样的平铺页面?我还有办法更有效地做到这一点吗?到目前为止我的速度很慢。
编辑:
更多信息:
i:蒙太奇--版本
版本:ImageMagick 6.8.8-10 Q16 x86_64 2015-03-10 <a href="http://www.imagemagick.org" rel="nofollow noreferrer">http://www.imagemagick.org</a>
平铺图片:
我当前的输出:
注意页边距不对,是正方形不是字母页,平铺也是歪斜的
根据您提供的 PNG 图像,我认为您希望在 8.5x11 英寸的打印图像中四周有 1 英寸的白色边框。因此,平铺宽度为 7.5 英寸,平铺高度为 10 英寸。
- 1 英寸 = 300 dpi 所以边框厚度 = 300 像素 = 2 块厚
- 11-1 = 平铺区域高度为 10 英寸 = 10*300 = 3000 像素
- 8.5-1 = 7.5 英寸宽平铺区域宽度 = 7.5*300 = 2250 像素
- 1 个图块 = 0.5 英寸,300 dpi = 0.5*300 = 150 像素
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 仅支持 pixelspercentimeter,但 IM 会相应地转换我的 pixelperinch 规格。因此,如果您查看元数据,它可能会以 pixelspercmeter 为单位向您显示一些其他密度。但它们将对应于需要 300 dpi。)