圖片轉換命令convert
convert 命令是由 ImageMagick 包提供。
選擇轉換爲jpg圖片會比轉換爲png圖片小很多。 jpg 圖片比 png小。
縮放:
convert -sample 80x60 input.jpg output.jpg
縮放後圖像保持原來的長寬比例(也可同時轉換格式,好用法):
convert -sample 25%x25% input.jpg output.jpg
類型轉換
convert 1.jpg 1.png
特殊效果
convert -charcoal 2 input.jpg output.jpg #炭筆
convert -colorize 255 input.jpg output.jpg #着色 可以指定三種顏色 red/green/blue
convert -implode 4 input.jpg output.jpg #內爆效果
convert -solarize 42 input.jpg output.jpg #曝光,模擬膠片曝光
convert -spread 5 input.jpg output.jpg #隨機移動,參數是位移大小
加邊框
convert -raise 5x5 input.jpg output.jpg
convert +raise 5x5 input.jpg output.jpg
使用ImageMagick的如下命令生成gif
-
執行如下命令將單幀圖片壓縮成 gif 圖片:
convert -delay 120 -loop 0 *.png out.gif
-
執行如下命令將 gif 圖片進行壓縮:
convert out.gif -fuzz 10% -layers Optimize optimized.gif
- 一個複雜一點的命令
convert -delay 50 frame1.gif -delay 100 frame1.gif -delay 150 frame1.gif -loop 0 -pause 200 animated.gif
利用ffmpeg將mp4轉換爲gif
方法一: 直接將視頻轉換爲gif
# 將整個small.mpr轉換爲gif
ffmpeg -i small.mp4 small.gif
# 從視頻第2秒開始,截取3秒片段爲gif
ffmpeg -t 3 -ss 00:00:02 -i small.webm small-clip.gif
# 轉換爲高質量的gif
ffmpeg -i small.mp4 -b 2048k small.gif
方法二: 先轉換爲圖片,再利用convert轉換爲gif
# 每10幀每秒
ffmpeg -i input.mp4 -r 10 output%05d.png
# 在利用Imagemagick的convert工具轉換爲gif
convert output*.png output.gif
在第一步時指定目錄:
mkdir /tmp/gif/
ffmpeg -i input.mp4 -r 10 /tmp/gif/output%04d.png
Peek
Peek是一個gif記錄工具。缺點:錄製後不能進行調整;優點:安裝方便
sudo add-apt-repository ppa:peek-developers/stable
sudo apt update && sudo apt install peek
在Ubuntu 16.04上安裝了 Peek後,這個軟件無法捕捉到圖像,捕捉界面是全黑的。
Gifine
Gifine可以錄製簡短的Gifs或者videos。優點:錄製後能進行調整;缺點:安裝麻煩,
嘗試了一次Gifine,製作全屏gif,時間大概40s,佔用了我10G內存,3.3G交換分區。製作小的gif還是可以。
原因:當時幀率默認爲30;總共錄製的圖片多達1238張,每張圖有100KB,總共有136MB。
解決辦法:錄製前改小幀率;錄製後適當刪除一些幀。
製作長gif:可以選擇使用Gifine,錄製多段小gif,再利用convert命令進行合併。
總體來說Gifine還是不錯的。
每一幀,對應一張圖片
Ubuntu 16.04安裝 Gifine
依次運行下面的命令進行安裝:
This has been tested on a fresh install of Ubuntu 16.04 LTS.
Install git:
$ sudo apt install git
Next, install all of the gifine
's dependencies and sub-dependencies:
$ sudo apt install -y \
ffmpeg \
graphicsmagick \
gifsicle \
luarocks \
libxext-dev \
libimlib2-dev \
mesa-utils \
libxrender-dev \
glew-utils \
libglm-dev \
cmake \
compiz \
gengetopt \
libglu1-mesa-dev \
libglew-dev \
libxrandr-dev \
libgirepository1.0-dev
Install slop
:
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install slop
Install LGI:
$ sudo luarocks install lgi
LuaRocks is the package manager for Lua modules.
Install gifine
:
$ sudo luarocks install --server=http://luarocks.org/dev gifine
另可直接參照:GitHub Gifine
這裏Gifine說只需在slop和xrectsel之間選擇一個進行安裝,且建議安裝的是 slop ,所以上面我們安轉了 slop。
依賴項xrectsel的安裝方法
Github xrectsel而xrectsel又依賴libx11,這可以通過安裝libx11-dev來解決。
sudo apt install libx11-dev -y cd /tmp git clone https://github.com/lolilolicon/xrectsel.git cd xrectsel sudo ./bootstrap sudo ./configure && sudo make && sudo checkinstall # 然後輸入一些信息,(必須輸入版本號才能生成xrectsel的deb安裝包) sudo dpkg -i xrectsel-***.deb
Gifine使用說明
使用技巧:錄製前先將要錄製的界面縮小,幀率設置爲4,錄製後刪除效果不佳的幀;這樣會大大減小最後生成的gif的大小。
錄製前:
打開Gifine後,你可以進行兩種操作:錄製視頻幀或者加載視頻幀。
設置幀率"Framerate"爲5或10
錄製後:
錄製視頻幀後,可以進行裁剪,可以設置幀延遲、幀率以及循環次數的選項。
- Trim left of : 剪切掉左側的幀(每一幀,對應一張圖片)
- Trim right of: 剪切掉右側的幀
- Delete frame:刪除當前幀
- Halve frame: 將幀的數量減半(刪除一半的圖片)
- Reset cuts:恢復所有裁剪的圖片
- Delay:延時。一般設置爲8或9,延時太小圖片變化的太快,看不清楚。
技巧: 在gif的開頭和結尾不要切換的太快,保留一定圖片,有助於提升gif的表達效果。
錄製的視頻幀不會自動清除,它們保存在/tmp/gifine_**
文件夾下,你還可以重新加載;在初始界面選擇"Load directory"加載目錄來加載。
補充
在GitHub上找到的幾個shell工具
都依賴於ffmpeg; makes creating high-quality gifs from video files
gifgen
<https://github.com/lukechilds/gifgen>
make-gif
<https://github.com/shmibs/make-gif>
使用google的guetzli壓縮圖片
google/guetzli: Perceptual JPEG encoder
請注意,Guetzli旨在用於高品質圖像。您應該始終傾向於提供未壓縮的圖像(例如尚未使用任何JPEG編碼器壓縮的圖像,包括Guetzli)。
參考
- 如何在 Linux 桌面上使用 Gifine 錄製 GIF 動畫?
- 使用 ffmpeg 實現 MP4 與 GIF 的互轉
- Convert video (.mp4 or other) to high quality animated gif
- 8 BEST SCREEN RECORDERS FOR LINUX IN 2017
來自於我的簡書:faner - 簡書