Gifski:一個跨平臺的高質量 GIF 編碼器
作為一名文字工作者,我需要在我的文章中新增圖片。有時為了更容易講清楚某個概念,我還會新增視訊或者 gif 動圖,相比於文字,通過視訊或者 gif 格式的輸出,讀者可以更容易地理解我的指導。前些天,我已經寫了篇文章來介紹針對 Linux 的功能豐富的強大截圖工具ofollow,noindex" target="_blank">Flameshot 。今天,我將向你展示如何從一段視訊或者一些圖片來製作高質量的 gif 動圖。這個工具就是 Gifski ,一個跨平臺、開源、基於 Pngquant 的高質量命令列 GIF 編碼器。
對於那些好奇 pngquant 是什麼的讀者,簡單來說 pngquant 是一個針對 PNG 圖片的無失真壓縮命令列工具。相信我,pngquant 是我使用過的最好的 PNG 無失真壓縮工具。它可以將 PNG 圖片最高壓縮70% 而不會損失圖片的原有質量並儲存了所有的阿爾法透明度。經過壓縮的圖片可以在所有的網路瀏覽器和系統中使用。而 Gifski 是基於 Pngquant 的,它使用 pngquant 的功能來建立高質量的 GIF 動圖。Gifski 能夠建立每幀包含上千種顏色的 GIF 動圖。Gifski 也需要 ffmpeg 來將視訊轉換為 PNG 圖片。
安裝 Gifski
首先需要確保你安裝了 FFMpeg 和 Pngquant。
FFmpeg 在大多數的 Linux 發行版的預設軟體倉庫中都可以獲取到,所以你可以使用預設的包管理器來安裝它。具體的安裝過程,請參考下面連結中的指導。
Pngquant 可以從AUR 中獲取到。要在基於 Arch 的系統安裝它,使用任意一個 AUR 幫助程式即可,例如下面示例中的 Yay :
-
$ yay -S pngquant
在基於 Debian 的系統中,執行:
-
$ sudo apt install pngquant
假如在你使用的發行版中沒有 pngquant,你可以從原始碼編譯並安裝它。為此你還需要安裝libpng-dev
包。
$ git clone --recursive https://github.com/kornelski/pngquant.git $ make $ sudo make install
安裝完上述依賴後,再安裝 Gifski。假如你已經安裝了Rust 程式語言,你可以使用 cargo 來安裝它:
-
$ cargo install gifski
另外,你還可以使用Linuxbrew 包管理器來安裝它:
-
$ brew install gifski
假如你不想安裝 cargo 或 Linuxbrew,可以從它的釋出頁面 下載最新的二進位制程式,或者手動從原始碼編譯並安裝 gifski 。
使用 Gifski 來建立高質量的 GIF 動圖
進入你儲存 PNG 圖片的目錄,然後執行下面的命令來從這些圖片建立 GIF 動圖:
-
$ gifski -o file.gif *.png
上面的file.gif
為最後輸出的 gif 動圖。
Gifski 還有其他的特性,例如:
- 建立特定大小的 GIF 動圖
- 在每秒鐘展示特定數目的動圖
- 以特定的質量編碼
- 更快速度的編碼
- 以給定順序來編碼圖片,而不是以排序的結果來編碼
為了建立特定大小的 GIF 動圖,例如寬為 800,高為 400,可以使用下面的命令:
-
$ gifski -o file.gif -W 800 -H 400 *.png
你可以設定 GIF 動圖在每秒鐘展示多少幀,預設值是20 。為此,可以執行下面的命令:
-
$ gifski -o file.gif --fps 1 *.png
在上面的例子中,我指定每秒鐘展示 1 幀。
我們還能夠以特定質量(1-100 範圍內)來編碼。顯然,更低的質量將生成更小的檔案,更高的質量將生成更大的 GIF 動圖檔案。
-
$ gifski -o file.gif --quality 50 *.png
當需要編碼大量圖片時,Gifski 將會花費更多時間。如果想要編碼過程加快到通常速度的 3 倍左右,可以執行:
-
$ gifski -o file.gif --fast *.png
請注意上面的命令產生的 GIF 動圖檔案將減少 10% 的質量,並且檔案大小也會更大。
如果想讓圖片以某個給定的順序(而不是通過排序)精確地被編碼,可以使用--nosort
選項。
-
$ gifski -o file.gif --nosort *.png
假如你不想讓 GIF 迴圈播放,只需要使用--once
選項即可:
-
$ gifski -o file.gif --once *.png
從視訊建立 GIF 動圖
有時或許你想從一個視訊建立 GIF 動圖。這也是可以做到的,這時候 FFmpeg 便能提供幫助。首先像下面這樣,將視訊轉換成一系列的 PNG 圖片:
-
$ ffmpeg -i video.mp4 frame%04d.png
上面的命令將會從video.mp4
這個視訊檔案建立名為 “frame0001.png”、“frame0002.png”、“frame0003.png” 等等形式的圖片(其中的 %04d
代表幀數),然後將這些圖片儲存在當前的工作目錄。
轉換好圖片後,只需要執行下面的命令便可以製作 GIF 動圖了:
-
$ gifski -o file.gif *.png
想知曉更多的細節,請參考它的幫助部分:
-
$ gifski -h
這是 使用 Gifski 建立的示例 GIF 動圖檔案。
正如你看到的那樣,GIF 動圖的質量看起來是非常好的。
好了,這就是全部內容了。希望這篇指南對你有所幫助。更多精彩內容即將呈現,請保持關注!
乾杯吧!
-
via: https://www.ostechnix.com/gifski-a-cross-platform-high-quality-gif-encoder/
作者:SK 選題:lujun9972 譯者:FSSlc 校對:wxy
轉自 https://linux.cn/article-10186-1.html