2011-05-06 70 views
4

我想使用ImageMagickconvert即时生成位图。生成页面大小和分辨率的图像?

但是,我想要指定一个页面大小(比如说A4,它将以英寸/厘米为单位进行内部指定),然后在DPI中指定分辨率 - 而不是直接指定以像素为单位的图像大小。

从我寻找到了convert选择,我猜下面的命令行会的伎俩:

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

...不幸的是,这会产生一个PNG图片,这是1x1像素的大小。

我想用convert做什么?如果没有,是否还有其他可用于此目的的工具?

回答

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
  • 在S的矢量文件不能“绘制”第二个命令,必须按照该顺序给出参数 - 以便将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文件)。

参考文献: