美文网首页程序员
透明背景gif图的锯齿是个什么鬼

透明背景gif图的锯齿是个什么鬼

作者: leadream | 来源:发表于2015-09-26 18:21 被阅读3315次

那天老板要做一个招聘的H5,里面有很多小动画。设计师就做了好多gif动图给我,把它们都放上之后,我才发现边缘竟然都有锯齿。

我就去找设计师,设计师瞪着无辜的大眼睛,让我看着她再导一遍。下面是她设计好的动图,在ps里面演示没有任何问题,旁边都是很温和的渐变。


帧动画效果

可是在导出gif预览的时候,这些渐变都消失了,换来的是很突兀的变化。这个边缘如果在白色背景下还好,如果在其他颜色下,就会显示出很明显的锯齿。我怀疑她的参数设置不对,就改变颜色、仿色、杂边这些参数,结果还是一样,只能放弃这个办法。


导出时效果

无意中研究了一下别人的代码,发现了一种比较偏的办法——动画。大致原理就是:将所有帧的图像拼合在一起,作为背景图像,通过控制background-position轮流显示每一帧。看图:

把两帧图像横向拼合

接下来,新建一个div标签,给它定一个宽和高,并使用该图像作为其背景。给它添加如下样式:

 .create-gif{
          animation:togif 400ms steps(2) infinite;
  -webkit-animation:togif 400ms steps(2) infinite;
     -moz-animation:togif 400ms steps(2) infinite;
      -ms-animation:togif 400ms steps(2) infinite;
       -o-animation:togif 400ms steps(2) infinite;
}
@keyframes togif {
  0% {background-position:0 0;}
  100% {background-position:200% 0;}
}
@-webkit-keyframes togif {
  0% {background-position:0 0;}
  100% {background-position:200% 0;}
}
@-moz-keyframes togif {
  0% {background-position:0 0;}
  100% {background-position:200% 0;}
}
@-ms-keyframes togif {
  0% {background-position:0 0;}
  100% {background-position:200% 0;}
}
@-o-keyframes togif {
  0% {background-position:0 0;}
  100% {background-position:200% 0;}
}

其实,这个动画只是规定在开始和结束时背景的变化。关键点在于动画运动的曲线——step(2),这是一个阶梯函数,其实应该是steps(n,x),第一个参数表示该动画被平分为n步,x是一个可以省略的参数,有两个值(start和end)可选,默认为end。我画了一个示意图如下,该函数会将动画属性从0到100%之间平分,每个节点为1帧。在这里平分为两份,有3个节点,对应就是background-position为0、100%、200%的状态,默认从第一个节点开始,就形成了background-position为0、100%的重复循环。


step(n,x)函数示意图

这样,因为png图片不会有锯齿边缘,通过动画生成gif动画之后也不会有。不过,好像这样处理设计师的工作量非但没有减轻,程序员的工作量反而加重了(T_T)~~~

相关文章

  • 透明背景gif图的锯齿是个什么鬼

    那天老板要做一个招聘的H5,里面有很多小动画。设计师就做了好多gif动图给我,把它们都放上之后,我才发现边缘竟然都...

  • gif动效的实现

    1.设计做gif给前端工程师,但是往往有透明度的gif会有锯齿。可类似于学ui网下面的gif图带上背景色 2.做成...

  • 面试题总结

    图片有哪几种格式 分别有什么特点? gif(动画)jpg(有损压缩有背景图,不支持透明,一般用作背景图等大图)pn...

  • android仿又到精品课Kotlin版、矢量动画实践、电商ap

    Android精选源码 Android 自定义dialog实现年龄选择输入 Android创建抗锯齿透明背景圆角图...

  • swift3.0 画锯齿视图

    画锯齿图在drawrect方法里进行: 外部设置参数锯齿个数,view的背景色,锯齿的背景色,锯齿的高度等 然后通...

  • 一篇文章教会你使用html+css3制作GIF图

    【一、项目背景】 生活中经常会见到很多gif图,那么gif图到底是什么?GIF是一种位图。简单来说就是通过每一张张...

  • 如何将视频转成GIF格式

    GIF分为静态GIF和动画GIF两种,扩展名为.gif,是一种压缩位图格式,支持透明背景图像,适用于多种操作系统。...

  • jpg 跟 png比较

    简单粗暴地说,小图标,用png储存最好。 png可以储存透明,完爆gif的地方在于失真小,没锯齿;劣势是不支持动画...

  • 透明背景GIF制作教程

    经过不断试错和在网上查询,终于找到了一个我认为效果比较好的方法,在这里跟大家分享一下 1.在AE里做好动效,记得勾...

  • 一键解决GIF锯齿-设计篇

    APNG代替GIF解决杂边、锯齿、颜色失真等问题,输出动态效果。 在制作简单动效GIF图是总会有失真的问题,设计师...

网友评论

    本文标题:透明背景gif图的锯齿是个什么鬼

    本文链接:https://www.haomeiwen.com/subject/bvrwcttx.html