首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Imagemagick convert:无法让-pointsize使用文本批注的计算值

Imagemagick convert:无法让-pointsize使用文本批注的计算值
EN

Stack Overflow用户
提问于 2015-08-04 22:13:32
回答 2查看 559关注 0票数 0

我正在使用ImageMagick为任意用户图像自动添加水印,使用的是‘转换’二进制文件(6.9.1,Mac )。

我尝试了很多方法,包括以下两种方法:

代码语言:javascript
复制
convert image.jpg -pointsize %[fx:w*0.05] -annotate 0 'Pointsize should be: %[fx:int(w*0.05)]' out.jpg

代码语言:javascript
复制
convert image.jpg -set value %[fx:w*0.05] -pointsize %[value] -annotate 0 'Pointsize should be: %[value]' out.jpg

在这两种情况下,计算值都会显示在文本标签中,但在点大小设置中不起作用。我已经确认了在设置静态值时,pointsize选项本身确实有效,例如

代码语言:javascript
复制
convert image.jpg -pointsize 30 -annotate 0 'Pointsize should be: 30' out.jpg

我是不是完全偏离正轨了?我不确定还能尝试什么。

谢谢

西蒙

EN

回答 2

Stack Overflow用户

发布于 2015-08-05 02:09:45

Mark Setchell有最好的答案/解决方案。ImageMagick不会扩展传递给-pointsize的变量工件,而是默认为1(您应该看到一个非常、非常、非常小的污点,这将是呈现为@1pt的文本)。

这是一个黑客

使用MBR选项,或者甚至不包括任何-pointsize参数,都将调用ImageMagick的caption:协议来动态调整点大小以适合父+pointsize (最小边界矩形)。

通过使用-set option:size重载-size参数,这将展开并遵守%[fx:...]变量。

代码语言:javascript
复制
convert wizard: -set 'option:size' '%[fx:w*0.5]x%[fx:h*0.5]' \
        +pointsize  caption:'This is dynamic pointsize' \
        -composite output.png

但是你真的应该照的建议去做!

票数 4
EN

Stack Overflow用户

发布于 2015-08-05 00:20:47

这是可行的,但它有点笨拙和丑陋,因为它使用外壳,并调用第二个进程(ImageMagick的identify),并必须重复图像名称……

代码语言:javascript
复制
convert image.jpg                                               \
  -pointsize $(identify -format "%[fx:int(w*0.05)]" image.jpg)  \
  -gravity center -annotate 0 "Some Text" out.jpg

尽管如此,它可能会让你继续下去,直到我或某个聪明的人(@emcconville我看着你)想出如何正确地做它:-)

备注:

我可以看到,我可以使用下面的代码将我自己的唯一命名变量正确地设置为宽度的5%:

代码语言:javascript
复制
convert image.jpg -set option:phnqz '%[fx:int(w*0.05)]' -verbose info:

Image: image.jpg
  Format: JPEG (Joint Photographic Experts Group JFIF format)
  Mime type: image/jpeg
  Class: DirectClass
  Geometry: 200x200+0+0
  Units: Undefined
  Type: Palette
  Endianess: Undefined
  Colorspace: sRGB
  Depth: 8/1-bit
  Channel depth:
    red: 1-bit
    green: 1-bit
    blue: 1-bit
  Channel statistics:
    Pixels: 40000
    Red:
      min: 255 (1)
      max: 255 (1)
      mean: 255 (1)
      standard deviation: 0 (0)
      kurtosis: 0
      skewness: 0
      entropy: nan
    Green:
      min: 255 (1)
      max: 255 (1)
      mean: 255 (1)
      standard deviation: 0 (0)
      kurtosis: 0
      skewness: 0
      entropy: nan
    Blue:
      min: 0 (0)
      max: 0 (0)
      mean: 0 (0)
      standard deviation: 0 (0)
      kurtosis: 0
      skewness: 0
      entropy: nan
  Image statistics:
    Overall:
      min: 0 (0)
      max: 255 (1)
      mean: 170 (0.666667)
      standard deviation: 0 (0)
      kurtosis: 0
      skewness: 0
      entropy: nan
  Colors: 1
  Histogram:
     40000: (255,255,  0) #FFFF00 yellow
  Rendering intent: Perceptual
  Gamma: 0.454545
  Chromaticity:
    red primary: (0.64,0.33)
    green primary: (0.3,0.6)
    blue primary: (0.15,0.06)
    white point: (0.3127,0.329)
  Background color: white
  Border color: srgb(223,223,223)
  Matte color: grey74
  Transparent color: black
  Interlace: None
  Intensity: Undefined
  Compose: Over
  Page geometry: 200x200+0+0
  Dispose: Undefined
  Iterations: 0
  Compression: JPEG
  Quality: 92
  Orientation: Undefined
  Properties:
    date:create: 2015-08-04T17:14:55+01:00
    date:modify: 2015-08-04T17:14:55+01:00
    fx:int(w*0.05): 10
    jpeg:colorspace: 2
    jpeg:sampling-factor: 1x1,1x1,1x1
    signature: 0b798b7a624ba8417c5249dc58a50fa18c931dbde7fd60227bf932d5de228aba
  Artifacts:
    filename: image.jpg
    phnqz: 10                               <--- *** HERE IT IS ***
    verbose: true
  Tainted: False
  Filesize: 757B
  Number pixels: 40K
  Pixels per second: 0B
  User time: 0.000u
  Elapsed time: 0:01.000
  Version: ImageMagick 6.9.1-9 Q16 x86_64 2015-08-03 http://www.imagemagick.org
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31811679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档