星期二, 12月 25, 2012

ImageMagick 將 jpeg 合併製成 gif 動畫

簡報檔只能有一個檔案是個人在做簡報的一個原則,所以裏面的動畫檔,基本上都用gif來解決…可是最近一直有gif檔太大,但是縮小又太模糊的困擾發生,只好測試一下看看該怎麼做gif檔比較能夠接受。
本篇重點在於resize jpg圖檔時,記得 -quality 100,圖形才不會糊糊的。
convert -resize 14% -quality 100 input.jpg output.jpg
基本上用到的工具就只是ImageMagick,請自行安裝先…

這是原始圖檔,4600x5500像素…檔案大小1.64MB,這樣的檔案一共44個。
基本上放ppt檔的圖形不需要那麼多像素,full hd 也才1920x1200。何況投影片解析度通常沒那麼高,以1024x768為目標來說,我們把圖形縮 14% 的話就變成644x770的檔案。指令如下:
convert -resize 14% original-1.jpg small-1.jpg
檔案大小被這麼一縮,剩下82k大小,可是圖形變的很糊,字與線條邊邊都會因為壓縮而有雜點…

用下述指令產生gif 檔
convert -loop 30 -delay 25 small-*.jpg anim.gif
做成的檔案大小是10.6mb,真是出人意料之外,因為44個各別的檔案也才3.64mb,怎會做成gif卻變那麼大,而且gif圖形品質當然不會變好哩。


jpeg轉檔時記得不要壓縮
由於jpeg存檔時可以指定是否壓縮,預設都會壓(不過我不知道convert採用的預設值多少),我們可以透過-quality 來決定壓縮值,0-100,100是不壓,所以重新用下述指令縮小圖檔:
convert -resize 14% -quality 100 original-1.jpg small-1.jpg
檔案大小變成約300kb,44個一共13.0mb

用下述指令把jpg合成gif後,檔案變成約9mb大小…又是另一個讓人意外的答案。
convert -loop 30 -delay 25 small-*.jpg anim.gif
註:
convert -loop 30 -delay 25 -quality 100 smail-*.jpg anim.gif
convert -loop 30 -delay 25 -quality 50 smail-*.jpg anim.gif
合成的檔案大小一樣是9mb,懷疑合成gif時沒有用到壓縮,所以quality在合成gif時無做用。


沒有留言: