前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Gifski:一个跨平台的高质量 GIF 编码器

Gifski:一个跨平台的高质量 GIF 编码器

作者头像
用户8639654
修改于 2021-10-26 02:18:06
修改于 2021-10-26 02:18:06
1.7K00
代码可运行
举报
文章被收录于专栏:云计算运维云计算运维
运行总次数:0
代码可运行

作为一名文字工作者,我需要在我的文章中添加图片。有时为了更容易讲清楚某个概念,我还会添加视频或者 gif 动图,相比于文字,通过视频或者 gif 格式的输出,读者可以更容易地理解我的指导。前些天,我已经写了篇文章来介绍针对 Linux 的功能丰富的强大截屏工具 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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ yay -S pngquant

在基于 Debian 的系统中,运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ sudo apt install pngquant

假如在你使用的发行版中没有 pngquant,你可以从源码编译并安装它。为此你还需要安装 libpng-dev包。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ git clone --recursive https://github.com/kornelski/pngquant.git
$ make
$ sudo make install

安装完上述依赖后,再安装 Gifski。假如你已经安装了 Rust 编程语言,你可以使用 cargo 来安装它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cargo install gifski

另外,你还可以使用 Linuxbrew 包管理器来安装它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ brew install gifski

假如你不想安装 cargo 或 Linuxbrew,可以从它的 发布页面 下载最新的二进制程序,或者手动从源码编译并安装 gifski 。

使用 Gifski 来创建高质量的 GIF 动图

进入你保存 PNG 图片的目录,然后运行下面的命令来从这些图片创建 GIF 动图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gifski -o file.gif *.png

上面的 file.gif 为最后输出的 gif 动图。

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

  • 创建特定大小的 GIF 动图
  • 在每秒钟展示特定数目的动图
  • 以特定的质量编码
  • 更快速度的编码
  • 以给定顺序来编码图片,而不是以排序的结果来编码

为了创建特定大小的 GIF 动图,例如宽为 800,高为 400,可以使用下面的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gifski -o file.gif -W 800 -H 400 *.png

你可以设定 GIF 动图在每秒钟展示多少帧,默认值是 20。为此,可以运行下面的命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gifski -o file.gif --fps 1 *.png

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

我们还能够以特定质量(1-100 范围内)来编码。显然,更低的质量将生成更小的文件,更高的质量将生成更大的 GIF 动图文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gifski -o file.gif --quality 50 *.png

当需要编码大量图片时,Gifski 将会花费更多时间。如果想要编码过程加快到通常速度的 3 倍左右,可以运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gifski -o file.gif --fast *.png

请注意上面的命令产生的 GIF 动图文件将减少 10% 的质量,并且文件大小也会更大。

如果想让图片以某个给定的顺序(而不是通过排序)精确地被编码,可以使用 --nosort 选项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gifski -o file.gif --nosort *.png

假如你不想让 GIF 循环播放,只需要使用 --once 选项即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gifski -o file.gif --once *.png

从视频创建 GIF 动图

有时或许你想从一个视频创建 GIF 动图。这也是可以做到的,这时候 FFmpeg 便能提供帮助。首先像下面这样,将视频转换成一系列的 PNG 图片:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ ffmpeg -i video.mp4 frame%04d.png

上面的命令将会从 video.mp4 这个视频文件创建名为 “frame0001.png”、“frame0002.png”、“frame0003.png” 等等形式的图片(其中的 %04d 代表帧数),然后将这些图片保存在当前的工作目录。

转换好图片后,只需要运行下面的命令便可以制作 GIF 动图了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gifski -o file.gif *.png

想知晓更多的细节,请参考它的帮助部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ gifski -h

这是使用 Gifski 创建的示例 GIF 动图文件。

正如你看到的那样,GIF 动图的质量看起来是非常好的。

好了,这就是全部内容了。希望这篇指南对你有所帮助。更多精彩内容即将呈现,请保持关注!

干杯吧!

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
IDEA的Git图形操作
IDEA或者IntelliJ IDEA是JetBrains公司提供的一款优秀的Java集成开发环境(IDE),通过使用插件,可以支持多种编程语言开发使用。
zhipingChen
2018/12/21
1.5K0
全网最全程序员效率工具及小技巧
ssh命令虽然可以通过密码登陆,但还是比较麻烦,建议配置公钥访问。 先看自己之前是否已经生成了公钥文件,如果没有需要手动生成
Java识堂
2020/09/03
1.2K0
全网最全程序员效率工具及小技巧
通过一篇文章带你玩转git和GitHub
在现代软件开发中,版本控制系统是不可或缺的工具。Git和Github是其中最受欢迎的组合。Git是一个开源的分布式版本控制系统,用于追踪代码的改动,而Github则是一个基于Git的代码托管平台,提供了代码托管、协作开发等功能。
鲜于言悠
2024/03/20
2860
通过一篇文章带你玩转git和GitHub
PhpStorm Git 操作
AppCode、CLion、Datalore、DataGrip、GoLand、IntelliJ IDEA、PhpStorm、PyCharm、Rider、RubyMine、WebStorm 等 JetBrains 的 IDEs
超级小可爱
2023/02/22
1.5K0
IDEA 中如何完成 Git 版本回退?
上周的文章发了后,有小伙伴问如何在 IDEA 中进行 Git 的版本回退? 其实这个松哥之前写过文章,但是时间久远了,所以今天再和小伙伴们重新捋一捋这个话题,顺便也来聊聊如何在 IDEA 中进行 Git 的版本回退。 Git 中的撤销操作,我们可以归纳为四类: 工作区的代码想撤销 add到暂存区的代码想撤销 提交到本地仓库的代码想撤销 远程仓库的代码想要撤销 1. 基于命令行 1.1 工作区的代码想撤销 可能有一天我正在写代码,写了很久发现写错了,想恢复到一开始的状态,一个笨办法就是把刚刚写的代码一行一行的
江南一点雨
2022/03/04
2.7K0
Git如何恢复之前版本,reset/revert在命令行和IDEA上的操作步骤
原理: git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,如下图所示,假设我们要回退到版本一:
chenchenchen
2021/09/06
9.2K0
【Android开发丨主题周】Android Studio中的13条Git实践
Git是一个开源、分布式的版本控制系统,与集中式版本控制系统(如SVN)最大的区别在于每个开发者都会有一个本地仓库,代码可以提交到本地,不需要依赖远程代码仓库。Git可用的图形化界面有很多,除了自带的Git GUI,还有第三方的SourceTree、TortoiseGit等。Android Studio中也自带了Git插件,已经基本上能够满足工作需求。接下来,我们一起探索Android Studio中Git的使用。
博文视点Broadview
2020/06/12
2.1K0
【Android开发丨主题周】Android Studio中的13条Git实践
git使用步骤_小猪酸奶的使用步骤
接触Git也些年头了,对于Git的使用也算是略有心得,想着 出于自己日后回顾,也便于他人查阅学习的目的,遂有此文, 相信看完此文你的Git使用会更进一步,谢谢~
全栈程序员站长
2022/11/08
1.1K0
git使用步骤_小猪酸奶的使用步骤
Java学习笔记-全栈-web开发-18-Git
Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
devi
2021/08/18
5420
Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!
因为教程详细,所以行文有些长,新手边看边操作效果出乎你的预料。GitHub虽然有些许改版,但并无大碍。
龙哥
2020/07/10
7610
Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!
【Git】IDEA使用Git(完)
通过Git命令可以完成Git相关操作,为了简化操作过程,我们可以在IEDA中配置Git,配置好后就可以在IDEA中通过图形化的方式来操作Git。
陶然同学
2023/02/24
1.3K0
【Git】IDEA使用Git(完)
Git 的基础使用
https://segmentfault.com/a/1190000015792394
Vine
2022/06/06
6860
如何高效地使用 Git
通过 HTTPS 访问 Git 远程仓库时,如果服务器的 SSL 证书未经过第三方机构签署,那么 Git 就会阻止这一操作
麦洛
2021/03/23
6780
如何高效地使用 Git
【Git】Git 原理和使用
我们在Linux常用工具中学会了 git 的简单使用,下面我们进一步学习使用 git.
YoungMLet
2024/03/01
2240
【Git】Git 原理和使用
Git全栈开发者使用指南
除此之外,还可以下载《progit》——这是最棒的Git学习资料,而且有中文版本。
三分恶
2021/01/05
9170
Git全栈开发者使用指南
初识git · 基本操作
Git 是一个开源的分布式版本控制系统,最初由林纳斯·托瓦兹(Linus Torvalds)于2005年开发,目的是为了更好地管理Linux内核的开发过程。与传统的集中式版本控制系统(如SVN)不同,Git允许开发者在本地进行完整的版本控制操作,包括提交、分支和合并,而无需依赖网络连接到中央服务器。
_lazy
2024/10/16
990
初识git · 基本操作
合理使用WebStorm-好用的Git工具
webstorm中集成了世界上最好用的git管理工具,它可以大大提升我们的工作效率,本文就跟大家分享下工作中几个常用操作,欢迎各位感兴趣的开发者阅读本文。
神奇的程序员
2022/04/10
1.6K0
合理使用WebStorm-好用的Git工具
常用Git命令手册
此文只是对Git有一定基础的人当记忆使用,比较简略,初级学员强烈推荐廖雪峰老师的Git系列教程,通俗易懂,戳此处即可开始学习
程序员飞飞
2020/02/27
5990
常用Git命令手册
Git与GitHub:解锁版本控制的魔法盒子
Git是一种分布式版本控制系统,由Linus Torvalds创造,主要用于帮助多人协作进行软件开发。它用于管理项目的历史记录,包括文件的更改历史和各种版本。
Srlua
2024/03/10
1950
Git与GitHub:解锁版本控制的魔法盒子
git进行版本控制管理
1、获取远程最新代码后,则需要从本地master分支切换到开发分支。(此处我们以每个新功能为一个新的开发分支)
李才哥
2019/07/10
1.2K0
git进行版本控制管理
相关推荐
IDEA的Git图形操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档