日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

ImageMagick的安裝及使用

系統 2014 0

近期在使用ImageMagick處理酒店團購圖片,寫篇博客小小的總結下它的安裝及使用方法。ImageMagick是一套功能強大且免費的圖片處理開發包,能夠用來讀,寫和處理多種格式的圖片文件,總之非常強大就是了,廢話不多說了,立即來看看它的安裝及使用方法。

1、安裝

以linux下源代碼安裝為例,首先到 點擊打開鏈接 上下載最新的ImageMagick源代碼包,當前最新版本號的源代碼包為ImageMagick-6.7.9-3.tar.gz,完成下載后,開始進行安裝。

首先進入文件下載文件夾,解壓源代碼包:

      cd ./Downloads

tar xzvf ImageMagick-6.7.9-3.tar.gz


    

文件解壓完后,進入解壓文件夾:

      cd ImageMagick-6.7.9-3/
    

接下來就是安裝三部曲了:

      ./configure 
    

在這個過程中,它會對系統的編譯鏈接環境以及ImageMagick所依賴的第三方庫進行檢查,特別須要注意的是,ImageMagick在處理圖片時須要依賴jpeg、png等第三方圖片庫,假設你的程序須要處理這些格式的圖片,須要確保這些庫已經正確的安裝,./configure結束后會輸出一個檢查報告,例如以下圖:

ImageMagick的安裝及使用

圖中顯示,在當前系統中沒有安裝jpeg第三方庫,因為業務須要處理jpeg格式的圖片,因此在安裝ImageMagick之前,須要先安裝好jpeg第三方庫。到? 點擊打開鏈接 上下載最新的源代碼包jpegsrc.v8d.tar.gz,安裝過程和ImageMagick基本上一樣,這里就不多說了。安裝完jpeg庫后,就能夠繼續安裝ImageMagick了。

接下來就是編譯源代碼以及安裝了:

      make

sudo make install


    

默認的ImageMagick會被安裝到/usr/local路徑下,成功安裝后就能夠在命令行模式下使用ImageMagick了。

2、命令行模式

ImageMagick最方便的地方就是能夠在命令行模式下執行,結合shell腳本,我們能夠進行很復雜的圖片操作,以下舉幾個簡單的樣例進行拋磚引玉。

(1) 圖片格式轉換:比方把文件夾下全部的jpeg格式的圖片轉化為png的,就能夠例如以下進行操作:

      for pic in *.jpg

do

convert ${pic} `basename ${pic} .jpg`.png

done


    

(2) 壓縮圖片大小:一般來說,在web應用中,假設圖片非常多或者非常大,就須要考慮對圖片大小進行適當的壓縮,經常使用的壓縮辦法有:減小圖片尺寸(圖片縮放),調節壓縮比或者去除圖片中的多余信息。這些操作使用ImageMagick就能夠輕易的完畢:

      convert -resize 100x100 src.jpg des.jpg
    

把src.jpg的圖片大小調整為100x100,convert命令在調整圖片高度和寬度的過程中會進行等比壓縮,也就是說圖片des.jpg的高寬比將會和src.jpg一致。

      convert -quality 75% src.jpg des.jpg
    

壓縮比越低,圖片的大小越小,一般來說75%是最佳的壓縮比,在這樣的情況下肉眼是非常難看出圖片的失真。

      convert -strip src.jpg dest.jpg
    

數碼相機在拍照的時候會在生成的圖片中留下一些額外的信息,這些信息往往是無用的,能夠使用convert –strip命令去除。

以上三種操作能夠合在一起進行:

      convert -resize 100x100 –strip -quality 75% src.jpg dest.jpg
    

ImageMagick功能十分強大,上面僅僅是拋磚引玉,有興趣的同學能夠去挖掘其很多其它的功能和使用方法。

3、編程接口模式

除了命令行模式外,ImageMagick還提供了各種語言的編程接口,包含有c、c++、java、php和perl等等,以下以c++接口為例展示其用法。

ImageMagick的c++接口名稱為Magick++,Magick++中有下面幾個重要的對象:

Image:圖片對象,Magick++中最重要的對象;

Geometry:Geometry包括了圖片長度,寬度,偏移等信息;

Pixels:圖片的像素對象

Color:圖片的顏色對象

Blob:二進制數據大對象容器

      #include <Magick++.h> 

#include <iostream> 

using namespace std; 

using namespace Magick; 

int main(int argc, char **argv) 

{ 

  InitializeMagick(*argv);



  Image image;

  try { 

    // 讀入一個圖片文件,把它存放在image對象中

    image.read( "src.jpg" );



    // 把圖片縮放到100x100的大小

    image.resize( Geometry(100,100) );



    // 把縮放后的圖片存放到文件

    image.write( "dest.jpg" ); 

  } 

  catch( Exception &error_ ) 

    { 

      cout << "Caught exception: " << error_.what() << endl; 

      return 1; 

    } 

  return 0; 

} 


    

從上面的樣例能夠看出Magick++的使用很的簡單,只須要包括Magick++.h一個頭文件就能夠了, 它的全部api及對象都放在Magick的命名空間內,唯一須要注意的是Magick++在錯誤發生的時候會拋出異常,所以一定要使用try catch塊捕獲住異常,這點千萬要記住。更具體的api文檔能夠參考以下的網址,使用文檔介紹的很具體,并且有各種樣例,相信不會很難看懂: 點擊打開鏈接
另外編譯的時候要-I/usr/local/include/ImageMagick ,-L/usr/local/lib,-lMagickCore -lm -lgomp -lpthread,學c++的都懂得,這里就不多說了

ImageMagick的安裝及使用


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 资中县| 枣庄市| 扎囊县| 汉寿县| 秦皇岛市| 辽阳县| 偏关县| 安平县| 贞丰县| 钦州市| 砀山县| 东乡| 遂宁市| 通州市| 贺兰县| 桃源县| 沁水县| 安庆市| 盐池县| 竹山县| 禄劝| 宜城市| 内江市| 邻水| 从江县| 天峨县| 惠来县| 德阳市| 台江县| 阆中市| 大新县| 内黄县| 仙游县| 淮阳县| 平原县| 安福县| 盐城市| 华亭县| 开阳县| 屯留县| 武汉市|