【问题标题】:Generate image with page size and resolution?生成具有页面大小和分辨率的图像?
【发布时间】:2011-05-06 07:43:17
【问题描述】:

我想使用ImageMagickconvert 即时生成位图。

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

通过查看convert 选项,我猜想下面的命令行可以解决问题:

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

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

我想用convert 做的事完全可行吗?如果没有,是否有任何其他工具可用于此目的?

【问题讨论】:

    标签: imagemagick


    【解决方案1】:

    我想,我能达到的最接近的是这个(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文件)。

    参考文献:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      相关资源
      最近更新 更多