Linux中gif的制作和图片转换

图片转换命令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

  1. 执行如下命令將单帧图片压缩成 gif 图片:

    convert -delay 120 -loop 0 *.png  out.gif
  2. 执行如下命令將 gif 图片进行压缩:
    convert out.gif -fuzz 10% -layers Optimize optimized.gif
  3. 一个复杂一点的命令
    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&gt;

make-gif
<https://github.com/shmibs/make-gif&gt;

使用google的guetzli压缩图片

google/guetzli: Perceptual JPEG encoder

请注意,Guetzli旨在用于高品质图像。您应该始终倾向于提供未压缩的图像(例如尚未使用任何JPEG编码器压缩的图像,包括Guetzli)。

参考

来自于我的简书:faner - 简书

原文地址:http://blog.51cto.com/13853366/2331187

时间: 2024-11-02 16:37:50

Linux中gif的制作和图片转换的相关文章

D语言中做图片转换

在D语言中可以使用imageformats库做图片转换. 该库可以从https://github.com/lgvz/imageformats 下载. 下载好后,装文件放入到自己的工程中就可以使用了.      转换函数: read_image_from_mem(imgData, ColFmt.RGBA); 转出来的数据为IFImage结构,以上面指定的格式存储在内存中. /// Image struct IFImage { int w, h; ColFmt c; ubyte[] pixels;

Linux中如何使用gThumb批量调整图片大小

Linux中如何使用gThumb批量调整图片大小 导读 如果你的工作涉及到图片编辑和处理,就一定会有同时对多张图片进行批量大小调整的经历.虽然大多数图片编辑应用都能够非常容易地批量调整多张图片,但对于新手用户来说,总是不太容易轻松找到并使用相关功能,因此本文将向大家介绍如何在 Linux 桌面系统中使用 gThumb 软件来批量调整图片大小. 由于主要步骤都以 gThumb 为中心,所以请先确保你在系统中已经安装了该应用.如果没有,可以自行在 Ubuntu Software Center 中搜索

linux下图片转换工具[【转】

本文转载自:https://linux.cn/article-8014-1.html 计算机术语中,批处理指的是用一个非交互式的程序来执行一序列的任务的方法.这篇教程里,我们会使用 Linux 命令行工具,并提供 4 种简单的处理方式来把一些 .PNG 格式的图像批量转换成 .JPG 格式的,以及转换回来. 虽然所有示例中我们使用的都是 convert 命令行工具,但是您也可以使用 mogrify 命令来达到同样的效果. convert 命令的语法如下: $ convert 输入选项 输入文件

Windows转到linux中,文件乱码,文件编码转换

转载:http://www.cnblogs.com/wanyao/p/3399269.html 最近,学习又重新开始Linux学习,所以一直在Centos中,昨天一朋友把他在Windows下写的C程序发给我,我欣然答应,本以为很快就能在我的Linux系统中运行起来.没想到出现了乱码,结果想把这个问题解决,一下子就搞了近三个小时没有解决.今天,又想起来这个问题,竟然一下子就解决了,现在把学到的一些东西总结如下. 首先Windows下的文件拿到Linux中来查看出现乱码是一种很常见的现象,这方面的资

在windows、linux中开启nginx的Gzip压缩大大提高页面、图片加载速度

为了降低tomcat服务的压力,把页面上的图片采用windows版的nginx进行加载,由于有些图片比较大,加载特别的慢,所以在nginx中打开了gzip的压缩功能.加载图片的速度快了很多. 通过站长工具中的"网页GZIP压缩检测"工具检测图片的压缩率达到了69.53%,如下图: 下面介绍nginx.conf文件是怎么配置的: 1.打开nginx.conf配置文件: 2.找到#gzip on这句,如下图: 3.在把#gzip on 改成下面代码: #开启Gzip gzip on; #不

C#将image中的显示的图片转换成二进制

原文:C#将image中的显示的图片转换成二进制 1.将Image图像文件存入到数据库中 我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存入数据库中. //将本地图片转换成二进制保存起来 private byte[] SetImageToByteArray(string fileName) { FileStream fs = null; try { fs = new FileStream(fileName, FileMode.Open, S

在Linux中CSV转换成XLSX

在linux中,把csv文件转换成excel表格(xlsx或者xls) $ echo -e 'surname,name,age\nCarlo,Smith,23\nJohn,Doe,46\nJane,Doe,69\nSarah,Meyer,23\n' > example.csv $ unix2dos example.csv $ ssconvert example.csv example.xlsx $ ssconvert example.csv example.xls 原文地址:https://ww

openstack 制作镜像以及windows向Linux中通过xshell传文件

慢慢的也要把openstack一些相关的笔记整理上来了 之前由于主要是在看horizon 实验室搭建的openstack平台并没有怎么实际的用起来,前几天别的同学要用来测试大数据的相关服务,才把这些内容又好好看了看,稍微体会了一下运维的感觉. 同学要用的是ubuntu64位的系统,开始打算自己做,但是网上的教程都是先申请一个10g的空间,然后怎么怎么弄,可能要涉及比较多的Linux知识,自己还有点玩不转. 于是就直接用官方的镜像来弄了:http://docs.openstack.org/imag

web图片转换小工具制作

HTML 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>图片在线webp/png/jpeg格式转换工具</title> 6 <meta name="description" content="图片在线转换工具:可以选择.webp .png .jpeg格式图片转换器" />