1. 程式人生 > >ImageMagick之圖片縮放

ImageMagick之圖片縮放

利用ImageMagicK的convert命令,能很方便的實現圖片的放大縮小,可以進行等比例縮放,也能縮放到指定的固定大小。縮放的引數resize,由它來指定縮放後圖片的寬高,比如“200×100”。

  • 等比縮放 例如把圖片a.jpg縮放到200×100的尺寸,可以用命令:
convert -resize 200×100 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。原則是縮放後的尺寸最少有一個是符合寬或高,且另外一個不能大於指定的引數中對應的寬或高。

另外可以通過只指定寬或高的方式來進行縮放。例如:

convert -resize 200 src.jpg dest.jpg
得到圖片寬為200,高根據原始圖片比例計算而來

convert -resize x100 src.jpg dest.jpg
得到的圖片高位100,寬根據原始圖片比例計算而來
  • 固定寬高縮放。即不考慮原是圖寬高的比例,把圖片縮放到指定大小。例如命令:
convert -resize 200x100! src.jpg dest.jpg

說明:區別是寬高後面多了一個歎號,此時不管原圖片比例如何,縮放後的圖片大小都是200×100,這樣就可能導致圖片變形。注意:在linux環境對引數需要用單引號引起來,而windows下又不能使用單引號。

  • 有條件縮放。可以通過>或<符號來控制原始圖片是否進行縮放,例如在處理一批尺寸大小各異的圖片,只想把尺寸大於給定的值圖片才進行縮小,如果沒有指定條件,可能會把那些小的圖片進行了放大處理。
convert -resize "200x100>" src.jpg dest.jpg
註解:只有當src.jpg的寬大於200或高大於100時候,才進行縮小處理,
否則生成的dest.jpg和src.jpg具有一樣的尺寸。
注意在linux下要用單引號替換成雙引號,即'200x100>'。

convert -resize "200x100<" src.jpg dest.jpg
註解:只有當src.jpg的寬小於200或高小於100時候,才進行放大處理,
否則生成的dest.jpg和src.jpg具有一樣的尺寸。
注意在linux下要用單引號替換成雙引號,即'200x100<'

上述兩種有條件縮放是按原始圖等比例縮放的,也就是對符合條件的圖片進行等比縮放。同時有條件縮放也可以與固定大小縮放聯合起來用。例如如下命令。

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。