|
現(xiàn)在更看重效率,所以本文就以GraphicsMagick為例來(lái)說(shuō)說(shuō):
對(duì)于phper來(lái)說(shuō),有兩種使用GraphicsMagick的方式:
1:使用PECL Gmagick擴(kuò)展。
2:使用GraphicsMagick命令行。
PECL擴(kuò)展的方式我并不喜歡,一來(lái)PECL代碼Bug多多,二來(lái)PECL擴(kuò)展的實(shí)現(xiàn),代碼寫(xiě)起來(lái)很羅嗦:比如縮放一個(gè)GIF動(dòng)畫(huà)圖片,如果你用命令行的方式,一句話(huà)就搞定,而用PECL擴(kuò)展的話(huà),還得先算動(dòng)畫(huà)有幾幀,再循環(huán)處理,很麻煩。所以說(shuō)我更傾向于使用命令行的方式,雖然命令行操作聽(tīng)起來(lái)很“重”,但如果建立若干臺(tái)圖片服務(wù)器,通過(guò)Gearman連接起來(lái),其實(shí)很是很有彈性的。
下面我們就以GraphicsMagick為例,采用命令行的方式來(lái)看看如何使用縮略圖功能:
先上一個(gè)原始圖片(input.jpg:160x120),以后的各個(gè)例子都會(huì)用到它:

BTW:列位看官現(xiàn)在可以咽口水了。
縮略圖1
gm convert input.jpg -thumbnail '100x100' output_1.jpg

實(shí)際生成的圖片大小是:100x75,也就是說(shuō)說(shuō)按此命令,會(huì)保持圖片比例不變生成縮略圖。這樣很不錯(cuò),但是有一個(gè)潛在的問(wèn)題:我們不能簡(jiǎn)單明了的知道圖片的最終大小,結(jié)果是前端顯示的時(shí)候,無(wú)法設(shè)置img標(biāo)簽的width和height屬性,如果我沒(méi)記錯(cuò)的話(huà),一般是推薦設(shè)定width和height屬性的,否則瀏覽器渲染起來(lái)可能會(huì)稍稍慢一點(diǎn)。
縮略圖2
gm convert input.jpg -thumbnail '100x100!' output_2.jpg

這次實(shí)際生成的圖片大小按定義來(lái),但圖片變形了,有時(shí)候這是不能接受的。
縮略圖3
gm convert input.jpg -thumbnail '100x100^' /
-gravity center -extent 100x100 output_3.jpg

這次不僅保證了大小,還保證了比例。不過(guò)圖片經(jīng)過(guò)了裁剪。
縮略圖4
gm convert input.jpg -thumbnail '100x100' /
-background gray -gravity center -extent 100x100 output_4.jpg

這次不僅保證了大小,還保證了比例,同時(shí)沒(méi)有對(duì)圖片進(jìn)行任何裁剪,多余的部分按指定顏色進(jìn)行填充。
縮略圖5
gm convert input.jpg -thumbnail '10000@' /
-background gray -gravity center -extent 100x100 output_5.jpg

這次保證了大小和比例,其中的10000就是100x100的乘積,同時(shí)在填充和裁剪之間做了一個(gè)平衡。
明白了以上幾個(gè)例子,縮略圖基本就能通吃了,肯定有一種會(huì)適合你的需求。GraphicsMagick的資料非常少,但好消息是GraphicsMagick和ImageMagick的用法基本兼容,所以你可以通過(guò)ImageMagick的資料來(lái)套用。
補(bǔ)充:如果想讓用戶(hù)手動(dòng)裁剪頭片的話(huà),imgAreaSelect是個(gè)好選擇。
php技術(shù):php下嘗試使用GraphicsMagick的縮略圖功能,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。