近期在使用ImageMagick處理酒店團(tuán)購圖片,寫篇博客小小的總結(jié)下它的安裝及使用方法。ImageMagick是一套功能強(qiáng)大且免費(fèi)的圖片處理開發(fā)包,能夠用來讀,寫和處理多種格式的圖片文件,總之非常強(qiáng)大就是了,廢話不多說了,立即來看看它的安裝及使用方法。
1、安裝
以linux下源代碼安裝為例,首先到 點(diǎn)擊打開鏈接 上下載最新的ImageMagick源代碼包,當(dāng)前最新版本號的源代碼包為ImageMagick-6.7.9-3.tar.gz,完成下載后,開始進(jìn)行安裝。
首先進(jìn)入文件下載文件夾,解壓源代碼包:
cd ./Downloads tar xzvf ImageMagick-6.7.9-3.tar.gz
文件解壓完后,進(jìn)入解壓文件夾:
cd ImageMagick-6.7.9-3/
接下來就是安裝三部曲了:
./configure
在這個(gè)過程中,它會對系統(tǒng)的編譯鏈接環(huán)境以及ImageMagick所依賴的第三方庫進(jìn)行檢查,特別須要注意的是,ImageMagick在處理圖片時(shí)須要依賴jpeg、png等第三方圖片庫,假設(shè)你的程序須要處理這些格式的圖片,須要確保這些庫已經(jīng)正確的安裝,./configure結(jié)束后會輸出一個(gè)檢查報(bào)告,例如以下圖:
圖中顯示,在當(dāng)前系統(tǒng)中沒有安裝jpeg第三方庫,因?yàn)闃I(yè)務(wù)須要處理jpeg格式的圖片,因此在安裝ImageMagick之前,須要先安裝好jpeg第三方庫。到? 點(diǎn)擊打開鏈接 上下載最新的源代碼包jpegsrc.v8d.tar.gz,安裝過程和ImageMagick基本上一樣,這里就不多說了。安裝完jpeg庫后,就能夠繼續(xù)安裝ImageMagick了。
接下來就是編譯源代碼以及安裝了:
make sudo make install
默認(rèn)的ImageMagick會被安裝到/usr/local路徑下,成功安裝后就能夠在命令行模式下使用ImageMagick了。
2、命令行模式
ImageMagick最方便的地方就是能夠在命令行模式下執(zhí)行,結(jié)合shell腳本,我們能夠進(jìn)行很復(fù)雜的圖片操作,以下舉幾個(gè)簡單的樣例進(jìn)行拋磚引玉。
(1) 圖片格式轉(zhuǎn)換:比方把文件夾下全部的jpeg格式的圖片轉(zhuǎn)化為png的,就能夠例如以下進(jìn)行操作:
for pic in *.jpg do convert ${pic} `basename ${pic} .jpg`.png done
(2) 壓縮圖片大小:一般來說,在web應(yīng)用中,假設(shè)圖片非常多或者非常大,就須要考慮對圖片大小進(jìn)行適當(dāng)?shù)膲嚎s,經(jīng)常使用的壓縮辦法有:減小圖片尺寸(圖片縮放),調(diào)節(jié)壓縮比或者去除圖片中的多余信息。這些操作使用ImageMagick就能夠輕易的完畢:
convert -resize 100x100 src.jpg des.jpg
把src.jpg的圖片大小調(diào)整為100x100,convert命令在調(diào)整圖片高度和寬度的過程中會進(jìn)行等比壓縮,也就是說圖片des.jpg的高寬比將會和src.jpg一致。
convert -quality 75% src.jpg des.jpg
壓縮比越低,圖片的大小越小,一般來說75%是最佳的壓縮比,在這樣的情況下肉眼是非常難看出圖片的失真。
convert -strip src.jpg dest.jpg
數(shù)碼相機(jī)在拍照的時(shí)候會在生成的圖片中留下一些額外的信息,這些信息往往是無用的,能夠使用convert –strip命令去除。
以上三種操作能夠合在一起進(jìn)行:
convert -resize 100x100 –strip -quality 75% src.jpg dest.jpg
ImageMagick功能十分強(qiáng)大,上面僅僅是拋磚引玉,有興趣的同學(xué)能夠去挖掘其很多其它的功能和使用方法。
3、編程接口模式
除了命令行模式外,ImageMagick還提供了各種語言的編程接口,包含有c、c++、java、php和perl等等,以下以c++接口為例展示其用法。
ImageMagick的c++接口名稱為Magick++,Magick++中有下面幾個(gè)重要的對象:
Image:圖片對象,Magick++中最重要的對象;
Geometry:Geometry包括了圖片長度,寬度,偏移等信息;
Pixels:圖片的像素對象
Color:圖片的顏色對象
Blob:二進(jìn)制數(shù)據(jù)大對象容器
#include <Magick++.h> #include <iostream> using namespace std; using namespace Magick; int main(int argc, char **argv) { InitializeMagick(*argv); Image image; try { // 讀入一個(gè)圖片文件,把它存放在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一個(gè)頭文件就能夠了, 它的全部api及對象都放在Magick的命名空間內(nèi),唯一須要注意的是Magick++在錯(cuò)誤發(fā)生的時(shí)候會拋出異常,所以一定要使用try catch塊捕獲住異常,這點(diǎn)千萬要記住。更具體的api文檔能夠參考以下的網(wǎng)址,使用文檔介紹的很具體,并且有各種樣例,相信不會很難看懂:
點(diǎn)擊打開鏈接
另外編譯的時(shí)候要-I/usr/local/include/ImageMagick ,-L/usr/local/lib,-lMagickCore -lm -lgomp -lpthread,學(xué)c++的都懂得,這里就不多說了
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
