歡迎光臨
每天分享高質量文章

Gifski:一個跨平臺的高質量 GIF 編碼器 | Linux 中國

今天,我將向你展示如何從一段影片或者一些圖片來製作高質量的 gif 動圖。
— Sk


致謝
編譯自 | 
https://www.ostechnix.com/gifski-a-cross-platform-high-quality-gif-encoder/
 
 作者 | Sk
 譯者 | Chang Liu (FSSlc) ?????共計翻譯:69.5 篇 貢獻時間:1375 天

作為一名文字工作者,我需要在我的文章中新增圖片。有時為了更容易講清楚某個概念,我還會新增影片或者 gif 動圖,相比於文字,透過影片或者 gif 格式的輸出,讀者可以更容易地理解我的指導。前些天,我已經寫了篇文章來介紹針對 Linux 的功能豐富的強大截圖工具 Flameshot[1]。今天,我將向你展示如何從一段影片或者一些圖片來製作高質量的 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 發行版的預設軟體倉庫中都可以獲取到,所以你可以使用預設的包管理器來安裝它。具體的安裝過程,請參考下麵連結中的指導。

◈ 在 Linux 中如何安裝 FFmpeg[2]

Pngquant 可以從 AUR[3] 中獲取到。要在基於 Arch 的系統安裝它,使用任意一個 AUR 幫助程式即可,例如下麵示例中的 Yay[4]

  1. $ yay -S pngquant

在基於 Debian 的系統中,執行:

  1. $ sudo apt install pngquant

假如在你使用的發行版中沒有 pngquant,你可以從原始碼編譯並安裝它。為此你還需要安裝 libpng-dev 包。

  1. $ git clone --recursive https://github.com/kornelski/pngquant.git

  2. $ make

  3. $ sudo make install

安裝完上述依賴後,再安裝 Gifski。假如你已經安裝了 Rust[5] 程式語言,你可以使用 cargo 來安裝它:

  1. $ cargo install gifski

另外,你還可以使用 Linuxbrew[6] 包管理器來安裝它:

  1. $ brew install gifski

假如你不想安裝 cargo 或 Linuxbrew,可以從它的 釋出頁面[7] 下載最新的二進製程式,或者手動從原始碼編譯並安裝 gifski 。

使用 Gifski 來建立高質量的 GIF 動圖

進入你儲存 PNG 圖片的目錄,然後執行下麵的命令來從這些圖片建立 GIF 動圖:

  1. $ gifski -o file.gif *.png

上面的 file.gif 為最後輸出的 gif 動圖。

Gifski 還有其他的特性,例如:

◈ 建立特定大小的 GIF 動圖
◈ 在每秒鐘展示特定數目的動圖
◈ 以特定的質量編碼
◈ 更快速度的編碼
◈ 以給定順序來編碼圖片,而不是以排序的結果來編碼

為了建立特定大小的 GIF 動圖,例如寬為 800,高為 400,可以使用下麵的命令:

  1. $ gifski -o file.gif -W 800 -H 400 *.png

你可以設定 GIF 動圖在每秒鐘展示多少幀,預設值是 20。為此,可以執行下麵的命令:

  1. $ gifski -o file.gif --fps 1 *.png

在上面的例子中,我指定每秒鐘展示 1 幀。

我們還能夠以特定質量(1-100 範圍內)來編碼。顯然,更低的質量將生成更小的檔案,更高的質量將生成更大的 GIF 動圖檔案。

  1. $ gifski -o file.gif --quality 50 *.png

當需要編碼大量圖片時,Gifski 將會花費更多時間。如果想要編碼過程加快到通常速度的 3 倍左右,可以執行:

  1. $ gifski -o file.gif --fast *.png

請註意上面的命令產生的 GIF 動圖檔案將減少 10% 的質量,並且檔案大小也會更大。

如果想讓圖片以某個給定的順序(而不是透過排序)精確地被編碼,可以使用 --nosort 選項。

  1. $ gifski -o file.gif --nosort *.png

假如你不想讓 GIF 迴圈播放,只需要使用 --once 選項即可:

  1. $ gifski -o file.gif --once *.png

從影片建立 GIF 動圖

有時或許你想從一個影片建立 GIF 動圖。這也是可以做到的,這時候 FFmpeg 便能提供幫助。首先像下麵這樣,將影片轉換成一系列的 PNG 圖片:

  1. $ ffmpeg -i video.mp4 frame%04d.png

上面的命令將會從 video.mp4 這個影片檔案建立名為 “frame0001.png”、“frame0002.png”、“frame0003.png” 等等形式的圖片(其中的 %04d代表幀數),然後將這些圖片儲存在當前的工作目錄。

轉換好圖片後,只需要執行下麵的命令便可以製作 GIF 動圖了:

  1. $ gifski -o file.gif *.png

想知曉更多的細節,請參考它的幫助部分:

  1. $ gifski -h

這是[8]使用 Gifski 建立的示例 GIF 動圖檔案。

正如你看到的那樣,GIF 動圖的質量看起來是非常好的。

好了,這就是全部內容了。希望這篇指南對你有所幫助。更多精彩內容即將呈現,請保持關註!

乾杯吧!


  1. via: https://www.ostechnix.com/gifski-a-cross-platform-high-quality-gif-encoder/

作者:SK[9] 選題:lujun9972 譯者:FSSlc 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

贊(0)

分享創造快樂