生成页面大小和分辨率的图像?

时间:2011-05-06 07:43:17

标签: imagemagick

我想使用ImageMagick的{​​{1}}动态生成位图。

但是,我想指定页面大小(例如,A4 - 内部以英寸/厘米为单位指定),然后在DPI中指定分辨率 - 而不是直接指定图像大小(以像素为单位)。

从我查看convert选项中,我猜到以下命令行可以解决问题:

convert

...遗憾的是,这会生成一个.png图像,其大小为1x1像素。

我想用convert -page A4 -density 300x300 xc:white -pointsize 72 -draw "text 25,60 'test'" test.png 做什么?如果没有,是否还有其他工具可用于此目的?

1 个答案:

答案 0 :(得分:3)

我想,我能得到的最接近的是(ImageMagick 6.6.2-6):

convert xc:white -page A4 myout.pdf
convert -density 300x300 myout.pdf -pointsize 72 -draw "text 25,235 'test'" myout.png

请注意:

  • 第一个命令仅针对pdf生成正确的页面大小(但不适用于ps
  • convert无法在pdf
  • 等矢量文件中“绘制”
  • 在第二个命令中,必须按顺序给出参数 - 以便将pdf视为具有已知大小的背景,在该背景上绘制文本。

顺便说一下,获取pdf文件给定密度的像素大小:

$ convert myout.pdf -format "%[fx:round(w)]x%[fx:h]" info:
595x842
$ convert -density 300x300 myout.pdf -format "%[fx:w]x%[fx:h]" info:
2479x3508

我想,这意味着在单个convert命令行中无法实现我想做的事情......

此外,还有一个代码,它还使用渐变:

convert xc:white -page A4 myout.pdf
TSIZE=$(convert -density 300x300 myout.pdf -format "%[fx:w]x%[fx:h]" info:)
convert -density 300x300 -size $TSIZE myout.pdf gradient:\#4b4-\#bfb -pointsize 72 -draw "text 25,235 'test'" -flatten myout.png

请注意,必须在单独的步骤中检索给定密度的图像大小 - 因为它是渐变所需的;还要注意-flatten的用法(没有它,会生成多个png文件)。

参考文献: