GraphicsMagick工具convert的geometry参数

geometry表达式

gm工具最基本的一些参数有-resize -crop -thumbnail -gravity,不过在此之前,需要先弄清楚的是其-geometry参数,注意-resize跟-geometry是别名关系,其表达式为:

<width>x<height>{+-}<x>{+-}<y>{%}{@}{!}{^}{<}{>}

以-resize为例,仅指定宽高,有如下常见三种:

256x256  #默认是保持原宽高比,目标宽高是其最大值,也就是宽或高中有一个可能小于256
256x256!  #不保持宽高比,强行拉伸
256x256^  #保持宽高比,目标宽高是其最小值,也就是宽或高中有一个可能大于256

按比例伸缩时,可使用百分比,比如生成当前图片的2x图,就可以使用-resize 200%

@的用法有点奇特,下面的例子是说,保持宽高比,结果宽乘以结果高的像素不超过200x200,即4万个像素:

-resize 200x200@ src.png dst.png

'640x480>'表示宽大于640或者高大于480才进行缩放,否则什么也不做;'640x480<'表示宽小于640且高小于480时进行缩放,否则什么也不做;

-thumbnail跟-resize的使用语法和作用一样,不过-thumbnail只关注快速生成缩略图,而不太关注生成结果的质量,但其质量往往是可接受的,通常生成小图,但也可以放大原图。

举例一个实用的例子,将一个图片居中裁剪出来一个指定尺寸的矩形,注意这里的+0+0是不能省略的,否则-gravity就不会起作用,截图结果不是居中裁剪的:

convert -resize 144x144^ -gravity center -crop 144x144+0+0 src.png ic_launcher.png

-gravity 可取值为:NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast。

其他常见且有用的例子:

创建一个图片:

convert -size 800x800 xc:white white.png

顺时针旋转90度:

convert -rotate 90 src.png dst.png

把某些区域填成白色:

convert -fill '#fff' -draw 'rectangle 10,10 100,100' src.jpg dst.jpg

把一个图画到另一个底图上:

convert -draw 'image over 10,10 100,100 white.png' src.jpg dst.jpg

 

发表于 2023年04月02日 11:44   评论:0   阅读:1369  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo