天天看點

linux強大的convert指令(可以對圖像做各種處理!)

附:其他ImageMagic工具的應用:https://blog.csdn.net/dongfang1984/article/details/84798174

強大的convert指令 

convert指令可以用來轉換圖像的格式,支援JPG, BMP, PCX, GIF, PNG, TIFF, XPM和XWD等類型,下面舉幾個例子: 

  convert  xxx.jpg  xxx.png   将jpeg轉成png檔案 

  convert  xxx.gif   xxx.bmp  将gif轉換成bmp圖像 

  convert  xxx.tiff    xxx.pcx   将tiff轉換成pcx圖像 

還可以改變圖像的大小: 

  convert -resize 1024x768  xxx.jpg   xxx1.jpg    将圖像的像素改為1024*768,注意1024與768之間是小寫字母x 

  convert -sample 50%x50%  xxx.jpg  xxx1.jpg   将圖像的縮減為原來的50%*50% 

旋轉圖像: 

convert -rotate 270 sky.jpg sky-final.jpg      将圖像順時針旋轉270度 

使用-draw選項還可以在圖像裡面添加文字: 

convert -fill black -pointsize 60 -font helvetica -draw 'text 10,80 "Hello, World!" ‘  hello.jpg  helloworld.jpg 

在圖像的10,80 位置采用60磅的全黑Helvetica字型寫上 Hello, World! 

convert還有其他很多有趣和強大的功能,大家不妨可以試試。 

待編輯。。。 

幾個簡單的應用。 

  1、批量圖像格式轉換 

  如果想将某目錄下的所有jpg檔案轉換為png檔案,隻要在指令行模式下輸入: 

  for %f in (*.jpg) do convert “%f” “%~nf.png” 

  2、對所有圖像進行同一操作 

  譬如,批量生成某目錄下所有PNG圖像檔案的縮略圖(大小為80×40): 

  for %f in (*.png) do convert “%f” -sample 80×40 “%~nf_sample.png” 

  類似的,将某目錄下所有PNG圖像旋轉90度的操作為: 

  for %f in (*.png) do convert “%f” -rotate 90 “%~nf_rotate.png” 

  還可以進行批量裁剪、淡化、抖動、炭化、加邊框、圓角等等一系列操作,具體可參考: linux/l-graf/index.html">http://www.ibm.com/developerworks/cn/linux/l-graf/index.html 

  http://linux.chinaunix.net/docs/2006-12-15/3481.shtml 

  3、在圖像上加上文字說明 

  如果你有大量圖檔需要釋出,在所有圖檔上加上版權說明是很明智的做法。用ImgeMagick可以很容易的實作: 

  convert 1.png -fill white -pointsize 13 -draw “text 10,15 ‘lifesinger 2006'” 2.png 

  可以用-font指定字型,這時需要安裝Ghostscript支援: http://www.cs.wisc.edu/~ghost/ 

  還可以用composite指令在所有圖檔上加上水印,有興趣的看這裡: 

  http://www.imagemagick.org/script/composite.php 

  —————————————————————————————————————————– 

  convert 

  轉換圖像格式和大小,模糊,裁剪,驅除污點,抖動,臨近,圖檔上畫圖檔,加入新圖檔,生成縮略圖等。 

  identify 

  描述一個或較多圖像檔案的格式和特性。 

  mogrify 

  按規定尺寸制作一個圖像,模糊,裁剪,抖動等。Mogrify改寫最初的圖像檔案然後寫到一個不同的圖像檔案。 

  composite 

  根據一個圖檔或多個圖檔組合生成圖檔。 

  montage 

  建立一些分開的要素圖像。在含有要素圖像任意的裝飾圖檔,如邊框、結構、圖檔名稱等。 

  compare 

  在算術上和視覺上評估不同的圖檔及其它的改造圖檔。 

  display 

  如果你擁有一個X server的系統,它可以按次序的顯示圖檔 

  animate 

  利用X server顯示動畫圖檔 

  import 

  在X server或任何可見的視窗上輸出圖檔檔案。 你可以捕獲單一視窗,整個的熒屏或任何熒屏的矩形部分。 

  conjure 

  解釋執行 MSL (Magick Scripting Language) 寫的腳本。 

  convert -sample 100×20 input.jpg output.jpg 

  上述指令生成一個100×20的縮略圖 

  更好的方法是用等比例縮放,像這樣,統一生成1/4的縮略圖 

  convert -sample 25%x25% input.jpg output.jpg 

  如果寫成腳本,就是像這個樣子 

  for img in `ls *.jpg` 

  do 

  convert -sample 25%x25% ${img} thm${img} 

  done 

  加注圖檔 

  convert -font fonts/font.ttf -stroke color -fill color -pointsize size 

  -draw ‘text 10,10 “String”‘ input.jpg output.jpg 

  -font 指定字型,因為這樣我加注文字, 

  -stroke 描邊用的顔色, 

  -fill 填充用的顔色,這裡用none就可以畫出空心字了, 

  -pointsize 加注字型大小,像素數, 

  -draw 是用來畫,這裡是文字,下面的位置10,10 是以圖檔左上角為原點坐标的 

  向圖像添加文本注釋 

  有時您需要向圖像添加文本注釋。例如,假設您的公司擁有标準的名片圖像,并希望在将名片發送到列印機之前将每個雇員的詳細資訊都添加到名片上面。另一個示例是為通過您網站上的線上課程的使用者生成表示證書(presentation certificate)。 

  您可以使用下列指令行,為該圖注釋一些辨別資訊: 

  convert -font helvetica -fill white -pointsize 36 

  -draw ‘text 10,50 “Floriade 2002, Canberra, Australia”’ 

  floriade.jpg comment.jpg 

  迄今為止,這是我在本文中所展示的最複雜的 convert 指令行了,是以我将花些時間來解釋它。 

  -font helvetica 将注釋的字型設定為 Helvetica。也可以在此處指定字型檔案的路徑。這個示例給圖像添加了标記,這樣未經許可其它網站就不能再使用該圖像了,但它是使用位于非标準位置的字型來完成該任務的: 

  convert -font fonts/1900805.ttf -fill white -pointsize 36 

  -draw ‘text 10,475 “stillhq.com”’ 

  floriade.jpg stillhq.jpg 

  -fill white 用白色而不是标準的黑色來填充字母。 

  -pointsize 36 以點為機關指定字母的大小。一英寸等于 72 點。 

  -draw ‘text 10,50 “…”’ 是一組繪圖指令,在本例中是移動到位置 10, 50,然後繪制出雙引号中的文本。使用單引号是因為如果需要繪制多個字,則繪圖指令中需要使用雙引号,而您不能在雙引号中再用雙引号。 

  在一次 ImageMagick 調用中執行多條指令 

  您已經看到了将指令與注釋示例聯系起來的示例。但是,可以将本文中提到的任意 ImageMagick 指令連結起來。例如,也許我們希望制作某圖像的縮略圖,然後對它應用發散。在發散發生之後,我們将應用炭筆效果: 

  convert -sample 25%x25% -spread 4 

  -charcoal 4 input.jpg output.jpg 

  用convert給圖檔加邊框 

  convert -raise 5×5 input.jpg output.jpg 

  convert +raise 5×5 input.jpg output.jpg 

  以上指令分别用-,+邊緣顔色的來達到處理邊緣的效果! 

  convert -bordercolor red -border 5×5 input.jpg output.jpg 

  簡單的加上5個像素寬的紅邊! 

  convertconvert顧名思義就是對圖像進行轉化,它主要用來對圖像進行格式的轉化,同時還可以做縮放、剪切、模糊、反轉等操作。 

  格式轉化比如把 foo.jpg 轉化為 foo.png: 

  convert foo.jpg foo.png如果要想把目錄下所有的jpg檔案都轉化為gif,我們可借助于shell的強大功能: 

  find ./ -name "*.jpg" -exec convert {} {}.gif \;轉化後的gif名稱為 *.jpg.gif ,這樣看起來不太自然,沒關系,我們可以再來一步: 

  rename .jpg.gif .gif *.jpg.gif本來,我想在find的時候,用basename來取得不帶字尾的檔案名的,這樣就不會形成.jpg.gif這種醜陋的名子了,可是不知道為什麼,就是不行,如果你知道的話,告訴我或者,你也可用shell script來完成上述的操作: 

  for i in *.jpg 

  do 

  convert $i `basename $i .jpg`.gif 

  done我們還可用mogrify來完成同樣的效果: 

  mogrify -format png *.jpg上面指令将會把目錄下面所有的jpg檔案轉化為png格式。convert還可以把多張照片轉化成pdf格式: 

  convert *.jpg foo.pdf大小縮放比如我們要為一個普通大小的圖檔做一個縮略圖,我們可以這樣 

  convert -resize 100x100 foo.jpg thumbnail.jpg你也可以用百分比,這樣顯的更為直覺: 

  convert -resize 50%x50% foo.jpg thumbnail.jpgconvert會自動地考慮在縮放圖像大小時圖像的高寬的比例,也就是說着新的圖像的高寬比與原圖相同。我們還可以批量生成縮略圖: 

  mogrify -sample 80x60 *.jpg注意,這個指令會覆寫原來的圖檔,不過你可以在操作前,先把你的圖檔備份一下。 

  加邊框在一張照片的四周加上邊框,可以用 -mattecolor 參數,比如某位同志犧牲了,我們需要為他做一張黑邊框的遺像,可以這樣: 

  convert -mattecolor "#000000" -frame 60x60 yourname.jpg rememberyou.png其中,”#000000″是邊框的顔色,邊框的大小為60×60你也可以這樣加邊框: 

  convert -border 60x60 -bordercolor "#000000" yourname.jpg rememberyou.png在圖檔上加文字 

  convert -fill green -pointsize 40 -draw 'text 10,50 "charry.org"' foo.png bar.png上面的指令在距離圖檔的左上角10×50的位置,用綠色的字寫下charry.org,如果你要指定别的字型,可以用-font參數。 

  模糊高斯模糊: 

  convert -blur 80 foo.jpg foo.png-blur參數還可以這樣-blur 80×5。後面的那個5表示的是Sigma的值,這個是圖像術語,我也不太清楚,總之,它的值對模糊的效果起關鍵的作用。 

  翻轉上下翻轉: 

  convert -flip foo.png bar.png左右翻轉: 

  convert -flop foo.png bar.png反色形成底片的樣子: 

  convert -negate foo.png bar.png單色把圖檔變為黑白顔色: 

  convert -monochrome foo.png bar.png加噪聲 

  convert -noise 3 foo.png bar.png油畫效果我們可用這個功能,把一張普通的圖檔,變成一張油畫,效果非常的逼真 

  convert -paint 4 foo.png bar.png旋轉把一張圖檔,旋轉一定的角度: 

  convert -rotate 30 foo.png bar.png上面的30,表示向右旋轉30度,如果要向左旋轉,度數就是負數。 

  炭筆效果 

  convert -charcoal 2 foo.png bar.png形成炭筆或者說是鉛筆畫的效果。 

  散射毛玻璃效果: 

  convert -spread 30 foo.png bar.png漩渦以圖檔的中心作為參照,把圖檔扭轉,形成漩渦的效果: 

  convert -swirl 67 foo.png bar.png凸起效果用-raise來建立凸邊: 

  convert -raise 5x5 foo.png bar.png執行後,你會看到,照片的四周會一個5×5的邊,如果你要一個凹下去的邊,把-raise改為+raise就可以了。其實凸邊和凹邊看起來差別并不是很大。 

  其他其他功能都是不太常用的,如果你感興趣的話,可以看它的聯機文檔 

  importimport是一個用于螢幕截圖的元件,下面列出的是我們常用的功能,其他的功能,你參考它的man好了。 

  截取螢幕的任一矩形區域 

  import foo.png在輸入上述的指令後,你的滑鼠會變成一個十字,這個時候,你隻要在想要截取的地方劃一個矩形就可以了 

  截取程式的視窗 

  import -pause 3 -frame foo.png回車後,用滑鼠在你想截的視窗上點一下即可。參數-frame的作用是告訴import,截圖的時候把目标視窗的外架構帶上,參數 -pause的作用很重要,你可以試着把它去掉,對比一下,你會發現,目标視窗的标題欄是灰色的,pause就是讓import稍微延遲一下,等你的目标視窗獲得焦點了,才開始截圖,這樣的圖才比較自然。 

  截取一個傾斜的視窗如果想讓你的截圖比較cool,你可以把截取一個傾斜的視窗,方法如下: 

  import -rotate 30 -pause 3 -frame foo.png截取整個螢幕 

  import -pause 3 -window root screen.png注意,暫停了3秒鐘,你需要在3秒鐘内切換到需要截取的畫面噢。 

  displaydisplay應該是我們使用的最為頻繁的圖像處理軟體了,畢竟,還是看的多 

  顯示圖檔 

  display foo.png如果你要顯示多個檔案,你可以使用通配符 

  display *.png幻燈片 

  display -delay 5 *每隔5個百分之秒顯示一張圖檔 

  一些快捷鍵 

  space(空格): 顯示下一張圖檔 

  backspace(回删鍵):顯示上一張圖檔 

  h: 水準翻轉 

  v: 垂直翻轉 

  /:順時針旋轉90度 

  \:逆時針旋轉90度 

  >: 放大 

  <: 縮小 

  F7:模糊圖檔 

  Alt+s:把圖檔中間的像素旋轉 

  Ctrl+s:圖象另存 

  Ctrl+d:删除圖檔 

  q: 退出

繼續閱讀