ImageMagick - 图片缩放

ImageMagick之图片缩放

利用ImageMagicK的convert命令,能很方便的实现图片的放大缩小,可以进行等比例缩放,也能缩放到指定的固定大小。缩放的参数resize,由它来指定缩放后图片的宽高,比如“200×100”。

  • 等比缩放

例如把图片a.jpg缩放到200×100的尺寸,可以用命令:

1
convert -resize 200x100 src.jpg dest.jpg

注意:虽然明确指定了图片大小为200×100,但dest.jpg的不一定就是200×100,因为是等比缩放的,dest.jpg大小取决原始图片比例。假设src.jpg的大小是500×200,那么缩放后dest.jpg的真实大小为200×80,再比如src.jpg的大小是300×200,缩放后的尺寸为150×100。原则是缩放后的尺寸最少有一个是符合宽或高,且另外一个不能大于指定的参数中对应的宽或高。另外可以通过只指定宽或高的方式来进行缩放。例如:

1
convert -resize 200 src.jpg dest.jpg

得到图片宽为200,高根据原始图片比例计算而来

1
convert -resize x100 src.jpg dest.jpg

得到的图片高为100,宽根据原始图片比例计算而来

  • 固定宽高缩放

即不考虑原是图宽高的比例,把图片缩放到指定大小。例如命令:

1
convert -resize 200x100! src.jpg dest.jpg

说明:区别是宽高后面多了一个叹号,此时不管原图片比例如何,缩放后的图片大小都是200×100,这样就可能导致图片变形。注意:在linux环境对参数需要用单引号引起来,而windows下又不能使用单引号。

  • 有条件缩放

可以通过>或<符号来控制原始图片是否进行缩放,例如在处理一批尺寸大小各异的图片,只想在尺寸大于给定值的情况下,图片才进行缩放,如果没有指定条件,可能会把那些小的图片进行了放大处理。

1
convert -resize "200x100>" src.jpg dest.jpg

注解:只有当src.jpg的宽大于200或高大于100时候,才进行缩小处理,否则生成的dest.jpg和src.jpg具有一样的尺寸。注意在linux下要用单引号替换双引号,即’200x100>’。

1
convert -resize "200x100<" src.jpg dest.jpg

注解:只有当src.jpg的宽小于200或高小于100时候,才进行放大处理,否则生成的dest.jpg和src.jpg具有一样的尺寸。注意在linux下要用单引号替换双引号,即’200x100<’

上述两种有条件缩放是按原始图等比例缩放的,也就是对符合条件的图片进行等比缩放。同时有条件缩放也可以与固定大小缩放联合起来用。例如如下命令:

1
convert -resize "800x100>!" src.jpg dest.jpg

注解:假设src.jpg尺寸是300x200。很显然src.jpg的宽(200)是大于指定值宽(100),符合缩小的条件,由于执行的不是等比缩放,所以dest.jpg的尺寸理论上是800x100,但是800是超过原始图片宽的,故dest.jpg的宽只能是300

convert -resize "10x1000<!" src.jpg dest.jpg

注解:假设src.jpg尺寸是300x200,src.jpg的宽(200)小于指定值宽(1000),因此该命令将执行放大图片操作,dest.jpg的高将放到到1000,由于宽比原始图片还小,就用原始图片的宽,所以得到的dest.jpg的尺寸是300x1000。