亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

PHP:ImageMagick完美代替GB類庫(kù)處理圖像

系統(tǒng) 2657 0

在使用php開發(fā)之中大家都習(xí)慣使用gb類庫(kù)來(lái)處理圖像信息,但是函數(shù)很多的gb類庫(kù)也是很頭疼,使用起來(lái)要一個(gè)個(gè)的查詢函數(shù)和看官方手冊(cè),下面將介紹一個(gè)很強(qiáng)大的圖像處理工具----ImageMagick,這個(gè)在liunx下面處理圖像信息將會(huì)更簡(jiǎn)潔。

先看一下百度百科的介紹:
ImageMagick是一套功能強(qiáng)大、穩(wěn)定而且免費(fèi)的工具集和開發(fā)包,可以用來(lái)讀、寫和處理超過(guò)89種基本格式的圖片文件,包括流行的TIFF、JPEG、GIF、 PNG、PDF以及PhotoCD等格式。利用ImageMagick,你可以根據(jù)web應(yīng)用程序的需要?jiǎng)討B(tài)生成圖片, 還可以對(duì)一個(gè)(或一組)圖片進(jìn)行改變大小、旋轉(zhuǎn)、銳化、減色或增加特效等操作,并將操作的結(jié)果以相同格式或其它格式保存。對(duì)圖片的操作,即可以通過(guò)命令行進(jìn)行,也可以用C/C++、Perl、Java、PHP、Python或Ruby編程來(lái)完成。同時(shí)ImageMagick提供了一個(gè)高質(zhì)量的2D工具包,部分支持SVG。現(xiàn)在,ImageMagic的主要精力集中在性能、減少bug以及提供穩(wěn)定的API和ABI上。

功能
1. 將圖片從一個(gè)格式轉(zhuǎn)換到另一個(gè)格式,包括直接轉(zhuǎn)換成圖標(biāo)。
2. 改變尺寸、旋轉(zhuǎn)、銳化(sharpen)、減色、圖片特效 
3. 縮略圖片的合成圖( a montage of image thumbnails) 
4. 適于web的背景透明的圖片  
5. 將一組圖片作成gif動(dòng)畫,直接convert

將幾張圖片作成一張組合圖片,montage 

在一個(gè)圖片上寫字或畫圖形,帶文字陰影和邊框渲染。  
8. 給圖片加邊框或框架  
9. 取得一些圖片的特性信息  
10,幾乎包括了gimp可以作到的常規(guī)插件功能。甚至包括各種曲線參數(shù)的渲染功能。只是那命令的寫法,夠復(fù)雜。  ImageMagick幾乎可以在任何非專有的操作系統(tǒng)上編譯,無(wú)論是32位還是64位的CPU,包括LINUX,Windows '95/'98/ME/NT 4.0/2000/XP, Macintosh (MacOS 9 /10), VMS 和 OS/2.

安裝:
ImageMagick提供多個(gè)版本 liunx, mac, win 都可以使用
具體的安裝和下載可以查考官網(wǎng):http://www.imagemagick.org/script/index.php?

下面是對(duì)其比較常用的功能介紹

1.對(duì)用戶上傳圖片進(jìn)行縮放 對(duì)于用戶自己上傳的圖片不能簡(jiǎn)單的 用css限制大小,因?yàn)檫@樣每次加載圖片時(shí)候還是會(huì)加載整幅大圖。占用多余的寬帶,并且影響頁(yè)面加載速度。應(yīng)該根據(jù)實(shí)際顯示需要進(jìn)行縮放。比如我想要用戶相冊(cè)里的圖片大小不能超過(guò)500x300: 用ImageMagick處理起來(lái)很簡(jiǎn)單 Im代碼

      convert -resize "500x300>" input.jpg output.jpg #如果圖片比500x300小就保持原樣,以防小圖片被放大失真。


    

2.生成不同比例縮略圖 一般相冊(cè)等應(yīng)用,都會(huì)提供縮略圖和預(yù)覽圖,這些縮略圖同樣不能簡(jiǎn)單的用css來(lái)限制大小,要為每個(gè)圖片生成不同比例的預(yù)覽圖。

?3.去除多余信息 Exif信息是數(shù)碼相機(jī)在拍攝過(guò)程中采集的一系列信息,這些信息放置在我們熟知的jpg文件的頭部,也就是說(shuō)Exif信息是鑲嵌在JPEG圖像文件格式內(nèi)的一組拍攝參數(shù),主要包括攝影時(shí)的光圈、快門、ISO、日期時(shí)間等各種與當(dāng)時(shí)攝影條件相關(guān)的訊息,相機(jī)品牌型號(hào),色彩編碼,拍攝時(shí)錄制的聲音以及全球定位系統(tǒng)(GPS)等信息。簡(jiǎn)單的說(shuō),它就好像是傻瓜相機(jī)的日期打印功能一樣,只不過(guò)Exif信息所記錄的資訊更為詳盡和完備。不過(guò),具有Exif信息的JPEG圖像文件要比普通的JPEG文件略大一點(diǎn)。還有就是像PS這種軟件處理過(guò)的圖片會(huì)有“program comments”。如果不是專業(yè)的攝影類網(wǎng)站,這些信息是沒有用的,可以去掉:?
Im代碼

      convert -strip input.jpg output.jpg   


    

4.調(diào)節(jié)壓縮比 大多時(shí)候,我們的網(wǎng)站并不需要那么清晰的圖片,適量調(diào)節(jié)JPG圖片的壓縮比會(huì)減少圖片大小,肉眼并不會(huì)分辨出質(zhì)量被壓縮后的圖片。通常75%是最佳比例。?
Im代碼

      convert -quality 75% input.jpg output.jpg   


    

上面幾個(gè)步驟可以一次搞定:?
Im代碼

      convert -resize "500x300" -strip -quality 75% input.jpg output.jpg   


    

上面說(shuō)的都是針對(duì)JPG格式的處理方式,下面說(shuō)一下BMP,GIF,PNG等格式的處理。 對(duì)于BMP直接轉(zhuǎn)成JPG就可以了。再按照上面的方式處理。 而GIF和PNG貌似有些特殊。GIF的一些特性(動(dòng)畫效果,透明等)是JPG沒有的,可以根據(jù)實(shí)際情況選擇轉(zhuǎn)或不轉(zhuǎn),如果轉(zhuǎn)換成jpg,取第一幀只需要這樣:
Im代碼

      convert -format jpg input.gif input.jpg   


    

PNG也可以通過(guò)減少PNG圖片color數(shù)量的辦法達(dá)到壓縮的目的。但是這種辦法壓縮出來(lái)的圖像可以明顯看出來(lái)失真,而且呈鋸齒狀。 對(duì)于真實(shí)世界的PNG圖片(通常指照片),一般先轉(zhuǎn)換成JPG,再通過(guò)上面的辦法來(lái)壓縮。 但是要注意一點(diǎn),透明或半透明的PNG圖片在轉(zhuǎn)換成JPG時(shí)透明部分會(huì)變成黑色。。。建議做用戶頭像時(shí)候不要轉(zhuǎn)成JPG。。很難看~~~ 本人頭像就是深受毒害。。 關(guān)于圖片擴(kuò)展名 發(fā)現(xiàn)大部分網(wǎng)站喜歡把用戶上傳的圖片(頭像,相冊(cè)等)都統(tǒng)一轉(zhuǎn)成特定格式(一般都是jpg)。這樣做的潛在弊端就是在用像ImageMagick這樣的軟件處理的時(shí)候會(huì)根據(jù)擴(kuò)展名做隱式格式轉(zhuǎn)換。 個(gè)人覺得在保存圖片的時(shí)候不加擴(kuò)展名處理起來(lái)更靈活一些。

?

?注:把上面的命令行用mini_magick改寫用到rails里很容易的。mini_magick本質(zhì)就調(diào)用系統(tǒng)命令行嘛~~

具體實(shí)例:下面是一個(gè)圖片上傳類:
實(shí)現(xiàn)對(duì)圖片大小的統(tǒng)一縮放

      /**

* @filesource upload.func.php

* 上傳圖片, 需要 ImageMagick

*/

/**

* 上傳文件

*$size:大小(格式100x100,中間是小寫x)

* 返回值:

* 0 文件類型錯(cuò)誤

*/

function upFile($size, $subdir){

set_time_limit(0);

$fileType = array("jpg","gif","bmp","jpeg","png");



$upPath = dirname(dirname(dirname(__FILE__)))

.DIRECTORY_SEPARATOR.'rooms'.DIRECTORY_SEPARATOR.'Img'

.DIRECTORY_SEPARATOR.$subdir.DIRECTORY_SEPARATOR;

// if(file_exists($upPath)) unlink($upPath);mkdir($upPath);

if( !is_dir($upPath))	mkdir($upPath);

$a = strtolower( pathinfo($_FILES['uploadfile']['name'], PATHINFO_EXTENSION) );

//判斷文件類型

if(!in_array( $a, $fileType )) {

//$text=implode(",",$fileType);

return 2; //echo "您只能上傳以下類型文件: ",$text,"<br>";

} else{ //生成目標(biāo)文件的文件名 

$filename=explode(".", $_FILES['uploadfile']['name']);



do{ 

$filename[0]=$size; //圖片名稱按尺寸命名

$name=implode(".", $filename);

$uploadfile= $upPath.$name;





}while( file_exists($uploadfile) );



try {

if ( copy($_FILES['uploadfile']['tmp_name'], $uploadfile) ){



///usr/bin/convert

exec("/usr/local/imagemagick/bin/convert -resize '{$size}>!' {$uploadfile} {$uploadfile}");

return "/kkyoo/rooms/icoImg/{$subdir}/".$name;

}

}catch (Exception $e){

echo $e->getMessage();

}

}

return 0;

}//END func upFile


    

?

?

?

?

PHP:ImageMagick完美代替GB類庫(kù)處理圖像


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 久久国产在线观看 | 乱人伦视频69 | 色综合久久精品中文字幕首页 | 狠狠色丁香久久婷婷综 | 97视频在线观看免费播放 | a毛片久久免费观看 | 国内精品免费久久影院 | 91精品国产亚一区二区三区 | 免费一级毛片无毒不卡 | 五月天婷婷激情网 | 免费特黄一级欧美大片在线看 | 欧美91精品久久久久网免费 | 日日舔 | 国产女人综合久久精品视 | 久久怡红院国产精品 | 色天天综合网 | 国产人成激情视频在线观看 | 越猛烈欧美xx00动态图免费 | 亚洲无卡视频 | 亚洲一区二区久久 | 欧美日韩中文一区二区三区 | 一级毛片日韩a欧美视频 | 国产一区曰韩二区欧美三区 | xxxxxx日本人免费 | 免费午夜剧场 | 奇米奇米色 | 亚洲免费网 | 天天操天天摸天天舔 | 国产精品免费看久久久麻豆 | 欧美日韩亚洲国产精品 | 98在线视频噜噜噜国产 | 成人欧美在线 | 26uuu另类亚洲欧美日本一 | 久久久久久久久性潮 | 日本不卡免费新一区二区三区 | 国产欧美国产精品第一区 | a在线视频 | 成人 亚洲 成人影院 | 中国国产成人精品久久 | 免费一级黄色毛片 | 精品久久久99大香线蕉 |