Gif超牛逼压缩工具,38M的GIF压缩到1M大小

下载

Gif压缩工具Gifsicle下载地址:https://eternallybored.org/misc/gifsicle/

解压

解压Gif工具到C盘的任意目录,并把Gif工具路径添加到系统环境变量,这样下次方便调用该工具

然后Path系统变量添加一行%Z_GIF%

使用Gifsicle

在Gif路径下shift+右击选择CMD,输入path查看末尾是否有gifsicle路径

输入命令

gifsicle XXX.gif --optimize=3 --colors 128 --lossy=1000 -o NEW.gif
  • --optimize
    --optimize=级别
    尝试缩小 GIF 动画的文件大小。 级别 决定做了多少优化;更高的水平需要更长的时间,但可能有更好的结果。目前分为三个级别:1,2,3

  • --colors
    --colors Num
    将每个输出GIF中不同颜色的数量减少到一个或更少。Num必须在2到256之间。这可以用来收缩输出gif或消除任何本地颜色表。
    通常,从现有的颜色表中选择一组自适应的颜色。你可以用——color-method选项来影响这个过程,或者用——use-colormap来给你自己的颜色图。Gifsicle可能需要添加一个额外的颜色(使num+1在所有),如果有透明度的图像。

  • --lossy=级别
    改变图像颜色以缩小输出文件的大小,代价是工件和噪声。有损决定了允许多少工件;较高的值会导致较小的文件大小,但会导致更多的工件。缺省值是20。

  • -o xxx.gif
    小写字母o,输出命名的gif文件

由于38M图片过大,没法上传,先上传

--optimize=3 --colors 128 --lossy=100
--optimize=3 --colors 128 --lossy=1000
--optimize=3 --colors 128 --lossy=10000

三张图片对比,原图38M,下面大小分别是8M,5M,3M

MP4转Gif

个人经常用ShareX软件按shift+PtrSc快捷键截屏录屏并且输出mp4文件,自用Ffmpeg+Git Bash+Gifsicle组合转为超小体积的Gif

ffmpeg,git bash,gifsicle三个exe的所在路径添加到系统变量后,PATHEXT添加;.SH

C:\XXX\Git bash\user\bin目录下新建gif.sh文件

gif.sh脚本内容

set -e
# 全局设定,fps帧数,scale分辨率为320
fps=8 
scale=320:-1
scale_=320
interpolation=lanczos

# max_colors设置彩色数量,彩色越小gif体积越小
max_colors=128 # up to 256
reserve_transparent=on
stats_mode=diff # chosen from [full, diff, single]

# for paletteuse
dither=sierra2 # chosen from [bayer, heckbert, floyd_steinberg, sierra2, sierra2_4a, none]
bayer_scale=5 # [0, 5]. only works when dither=bayer. higher means more color banding but less crosshatch pattern and smaller file size
diff_mode=rectangle # chosen from [rectangle, none]
new=on # when stats_mode=single and new=on, each frame uses different palette

# 文件用时间命名
time=$(date +"%Y-%m-%d--%H-%M-%S")

# 设定Gif播放率,0.5为2倍播放,1为正常播放,4为放慢4倍播放
ffmpeg -i $1 -vf "setpts=0.5*PTS" output_temp.mp4

# 使用上面的参数加入到命令中执行,$1为输入的文件名
ffmpeg -i output_temp.mp4 -vf "fps=$fps,scale=$scale:flags=$interpolation,split[split1][split2];[split1]palettegen=max_colors=$max_colors:reserve_transparent=$reserve_transparent:stats_mode=$stats_mode[pal];[split2][pal]paletteuse=dither=$dither:bayer_scale=$bayer_scale:diff_mode=$diff_mode:new=$new" -y new_mp4_temp.gif

# 删除产生的临时文件
rm output_temp.mp4

# --optimize 优化等级[1,2,3]  --lossy=有损优化等级[0~无穷]
gifsicle new_mp4_temp.gif --optimize=3 --lossy=100 -o net_output.gif

# 删除产生的临时文件
rm new_mp4_temp.gif

# 对转换后的文件进行重命名
mv net_output.gif $time\_fps=$fps\_scale=$scale_\_max_colors=$max_colors.gif

打开CMD输入gif.sh W.mp4即可转换完毕

1008KB效果图

posted @ 2022-04-04 20:19  平凡的玩家  阅读(1855)  评论(0编辑  收藏  举报