我想使用ImageMagick
的{{1}}动态生成位图。
但是,我想指定页面大小(例如,A4 - 内部以英寸/厘米为单位指定),然后在DPI中指定分辨率 - 而不是直接指定图像大小(以像素为单位)。
从我查看convert
选项中,我猜到以下命令行可以解决问题:
convert
...遗憾的是,这会生成一个.png图像,其大小为1x1像素。
我想用convert -page A4 -density 300x300 xc:white -pointsize 72 -draw "text 25,60 'test'" test.png
做什么?如果没有,是否还有其他工具可用于此目的?
答案 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文件给定密度的像素大小:
$ 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文件)。
参考文献: