关于ImageMagick中-gravity配合-annotate的X/Y坐标计算疑问
ImageMagick -gravity 与 -annotate 坐标逻辑说明及相对边距实现
一、SouthEast gravity下的坐标逻辑确认
你的测试结果完全正确:当使用-gravity SouthEast时,-annotate +X+Y中的X值对应的是文本到图像右边缘的距离,Y值对应的是文本到图像下边缘的距离。
这是因为-gravity参数的作用是指定文本的锚点:
SouthEast锚点为图像的右下角+X+Y是从锚点向左上方向的偏移量:X值越大,文本向左偏移越多(右边缘留白越大);Y值越大,文本向上偏移越多(下边缘留白越大)。
二、不同gravity下的统一偏移规则
所有-gravity参数对应的锚点及偏移逻辑如下:
NorthWest:锚点为左上角,+X+Y是向右下偏移,对应左边缘留白X、上边缘留白YNorthEast:锚点为右上角,+X+Y是向左下偏移,对应右边缘留白X、上边缘留白YSouthWest:锚点为左下角,+X+Y是向右上偏移,对应左边缘留白X、下边缘留白YSouthEast:锚点为右下角,+X+Y是向左上偏移,对应右边缘留白X、下边缘留白Y- 中心类gravity(如
Center):+X+Y是从中心向对应方向偏移
三、实现相对图像尺寸的内边距
如果要根据图像尺寸动态计算内边距,可按以下步骤操作:
- 获取图像尺寸:使用
identify命令提取图像的宽高
该命令会输出类似identify -format "%w %h" E:\folders\parent\child1\in.jpg1920 1080的宽高数值 - 计算相对边距:比如要设置边距为图像宽度的5%,则X值为
宽度*0.05;边距为高度的8%,则Y值为高度*0.08 - 传递参数到mogrify:将计算得到的X/Y值代入
-annotate参数
四、修正你的mogrify命令
原命令存在两处语法问题:
-stroke black 13错误,-stroke仅接受颜色参数,宽度需通过-strokewidth单独设置- 使用了中文引号“”,需替换为英文引号""
修正后的命令:
mogrify -format jpg -font "Rockwell" -weight ExtraBold -fill gold -pointsize 63 ^ -stroke black -strokewidth 14 -gravity SouthEast -annotate +5+100 "text1" ^ -stroke none -gravity SouthEast -annotate +5+100 "text1" E:\folders\parent\child1\in.jpg
内容的提问来源于stack exchange,提问作者Doc DJ
相关产品推荐
相关产品推荐

