2011-05-06 45 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文件)。

參考文獻: