我正在使用ImageMagick为任意用户图像自动添加水印,使用的是‘转换’二进制文件(6.9.1,Mac )。
我尝试了很多方法,包括以下两种方法:
convert image.jpg -pointsize %[fx:w*0.05] -annotate 0 'Pointsize should be: %[fx:int(w*0.05)]' out.jpg和
convert image.jpg -set value %[fx:w*0.05] -pointsize %[value] -annotate 0 'Pointsize should be: %[value]' out.jpg在这两种情况下,计算值都会显示在文本标签中,但在点大小设置中不起作用。我已经确认了在设置静态值时,pointsize选项本身确实有效,例如
convert image.jpg -pointsize 30 -annotate 0 'Pointsize should be: 30' out.jpg我是不是完全偏离正轨了?我不确定还能尝试什么。
谢谢
西蒙
发布于 2015-08-05 02:09:45
Mark Setchell有最好的答案/解决方案。ImageMagick不会扩展传递给-pointsize的变量工件,而是默认为1(您应该看到一个非常、非常、非常小的污点,这将是呈现为@1pt的文本)。
这是一个黑客
使用MBR选项,或者甚至不包括任何-pointsize参数,都将调用ImageMagick的caption:协议来动态调整点大小以适合父+pointsize (最小边界矩形)。
通过使用-set option:size重载-size参数,这将展开并遵守%[fx:...]变量。
convert wizard: -set 'option:size' '%[fx:w*0.5]x%[fx:h*0.5]' \
+pointsize caption:'This is dynamic pointsize' \
-composite output.png

但是你真的应该照的建议去做!
发布于 2015-08-05 00:20:47
这是可行的,但它有点笨拙和丑陋,因为它使用外壳,并调用第二个进程(ImageMagick的identify),并必须重复图像名称……
convert image.jpg \
-pointsize $(identify -format "%[fx:int(w*0.05)]" image.jpg) \
-gravity center -annotate 0 "Some Text" out.jpg

尽管如此,它可能会让你继续下去,直到我或某个聪明的人(@emcconville我看着你)想出如何正确地做它:-)
备注:
我可以看到,我可以使用下面的代码将我自己的唯一命名变量正确地设置为宽度的5%:
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.orghttps://stackoverflow.com/questions/31811679
复制相似问题